2010-11-17 67 views
0

看起來他們是在qt3這個解決方案,但我找不到一個qt4(我用過的所有,我看到了qt3的解決方案)。我怎樣才能監測qProcess完成()在qt4(信號/插槽)

connect(r, SIGNAL(readyReadStandardError()), this, SLOT(updateError())); 
connect(r, SIGNAL(readyReadStandardOutput()), this, SLOT(updateText())); 
connect(r, SIGNAL(finished(int exitcode)), this, SLOT(updateExit())); 

我有我的標準輸出/標準錯誤的信號/槽的工作就好了,但我似乎無法找到一個很好的解決方案完成。我無法做任何事情循環或proc-> waitforfinished因爲我需要不斷更新到我的用戶界面。我怎樣才能做到這一點?

我的錯誤:對象::連接:沒有這樣的信號,另外,QProcess ::成品(INT退出碼)

感謝

下面是QProcess中的信號....

Signals 
void error (QProcess::ProcessError error) 
void finished (int exitCode, QProcess::ExitStatus exitStatus) 
void readyReadStandardError() 
void readyReadStandardOutput() 
void started() 
void stateChanged (QProcess::ProcessState newState) 
+0

您的環境是否爲QT4正確設置?完成絕對是QProcess的「信號」成員。 – JimR 2010-11-18 23:14:44

回答

2

connect(r, SIGNAL(finished(int)), this, SLOT(updateExit())); 

取代你的代碼行

connect(r, SIGNAL(finished(int exitcode)), this, SLOT(updateExit())); 

當連接信號和槽不給參數名稱。

0

我覺得我在這裏錯過了一些東西,但我有幾分鐘...... :)

4.x中完成的信號有什麼問題?它只是增加了一些參數,從你可以告訴我的內容。

4.5:

void QProcess::finished(int exitCode, QProcess::ExitStatus exitStatus)

4.0:

void QProcess::finished(int exitCode)

改變你的插槽有正確的論點和不理會他們,如果你不需要它們。

至於需要狀態更新,請在一個單獨的線程中啓動新的QProcess,並讓該線程完成等待。

+0

對我的代碼進行了一些編輯...嘗試了我認爲是正確的並且出現了錯誤...嘗試了一些沒有運氣的方法 – JohnStudio 2010-11-17 02:11:00

+1

@John:你嘗試了什麼? (int,QProcess :: ExitStatus)),這個,SLOT(updateExit(int,QProcess :: ExitStatus)));'用'void updateExit(int exitCode,QProcess: :ExitStatus exitStatus);' – 2010-11-17 02:46:44

+0

@John Studio - 郵編,如果你想快速解決它。越快越容易得到答案,我們越容易編譯代碼。 – JimR 2010-11-18 23:13:22