作者qscgy4 (Unknow)
看板C_and_CPP
標題[問題] QT QProcess 沒反應
時間Fri Aug 7 00:44:16 2015
開發平台(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();
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.48.157
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1438879458.A.E38.html
→ uranusjr: Program 先改用絕對路徑試試看 08/07 00:57
→ qscgy4: 改用絕對路徑 D:\test.exe 或 D:/test.exe 還是沒有作用 08/07 11:44
→ twitcha101: 改//? 08/07 12:23
謝謝各位,我已經找到問題....因為我拼錯檔名了。
※ 編輯: qscgy4 (123.195.48.157), 08/07/2015 21:33:01