2016-11-17 39 views
0

我有一個簡單的應用程序開始爭論另一個程序從QT應用

int main(int argc, char* argv[]){ 
//cout << argv[1]; 
cout << "hello world"; 
getchar(); 
} 

,我想用

QProcess *process= new QProcess(this); 
QString appPath= "..../.../TestApp2.exe"; 
process->start(appPath); 

的問題是,我的程序這麼想的開始從QT程序來啓動它,即使沒有爭論。我試圖啓動一個標準的應用程序,如「calc」,它工作。我怎麼能開始我的具體ARGS應用程序(uncommitting的第一個片段的第二行後確定)

+1

是否「..../.../TestApp2.exe」應該表示可執行文件的完整路徑或者是您正在使用的實際代碼? – UnholySheep

+0

使用 - > QProcess :: setWorkingDirectory()設置exec所在的路徑。 – Ankur

+0

它包含絕對文件路徑,但我沒有在這裏包含它,因爲它無關緊要。相同的路徑可以通過將它複製到命令行而沒有問題來執行 – test11

回答

1

我試圖啓動一個標準的應用程序,如「鈣」和它的工作。我如何啓動我的應用程序

您的應用程序是一個控制檯應用程序。

QProcess隱藏控制檯應用程序控制臺窗口並重定向其標準輸出/ STDERR你看他們(使用readAllStandardOutput()readAllStandardError(),...)。並且無論你的write()到你的QProcess都轉到了STDIN。 因此,如果您期望在進程啓動時看到控制檯窗口,那麼您錯了。

如果你想開始不隱藏它的控制檯窗口控制檯應用程序,你可以使用QProcess::startDetached()

QProcess::startDetached("test.exe"); 

但大多數時候是沒有理由這樣做。 QProcess旨在從GUI應用程序中使用,以便在幕後啓動過程,並從中獲取結果。之後,您可以按照自己喜歡的方式將結果顯示給用戶。 GUI應用程序的用戶通常不希望控制檯窗口每隔一會兒都要求他/她輸入信息。另外,他/她不希望在控制檯窗口中看到結果。

相關問題