[问题] QT QProcess 没反应

楼主: qscgy4 (有点厉害)   2015-08-07 00:44:16
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
QT Creator 5.4
Win7 x64
问题(Question):
各位大大好,我是QT新手
现在想用QT开一个Mainwindows呼叫一个Dialog,
然后在Dialog下按一个按钮去执行一个外部程式,
但是我参考了网络QProcess很多方法到现在还是弄不出个什么鸟,
不管用start()或execute()一瞬间就结束了,
也没有发出任何的started(), finished(), error()的讯号,
其中,还没办法连结到error()讯号,以下是我目前的做法...
假设我原本有一个 test.exe,呼叫时所需输入的参数大概如下
test.exe -abc -def -ghijk
以下是经过简化的程式:
class MyDialog : public QDialog, public Ui_MyDialog {
Q_OBJECT
private:
QProcess* PtrProcess;
private slots:
void A();
void B();
void C(int);
void D(int);
}
MyDialog::MyDialog() {
setupUi(this);
PtrProcess = new QProcess(this);
connect(PtrProcess, SIGNAL(readyRead()), this, SLOT( A() ));
connect(PtrProcess, SIGNAL(started()), this, SLOT( B() ));
connect(PtrProcess, SIGNAL(error(int)), this, SLOT( C(int) ));
connect(PtrProcess, SIGNAL(finished(int)), this, SLOT( D(int) ));
connect(pushButton, SIGNAL(clicked()), this, SLOT( DoProcess() ));
}
void MyDialog::DoProcess() {
QString program = "./abc/test.exe";
QStringList arguments;
arguments << "-abc" << "-def" << "-ghijk"
PtrProcess->setProgram(program);
PtrProcess->setArguments(arguments);
PtrProcess->start();
PtrProcess->waitForFinished();
}
作者: uranusjr (←這人是超級笨蛋)   2015-08-07 00:57:00
Program 先改用绝对路径试试看
楼主: qscgy4 (有点厉害)   2015-08-07 11:44:00
改用绝对路径 D:\test.exe 或 D:/test.exe 还是没有作用
作者: twitcha101 (twitch)   2015-08-07 12:23:00
改//?

Links booklink

Contact Us: admin [ a t ] ucptt.com