2016-11-17 34 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应用程序的用户通常不希望控制台窗口每隔一会儿都要求他/她输入信息。另外,他/她不希望在控制台窗口中看到结果。

相关问题