[問題] 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