看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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