从Qt应用程序调用命令提示符而不冻结?

时间:2010-07-15 21:03:44

标签: c++ qt command-line

在我的Qt GUI应用程序中,我通过以下方法调用命令提示符:

system("lots.exe & of.exe && commands.exe");

它打开命令提示符(就像我想要的那样),但冻结Qt GUI应用程序,直到我关闭命令提示符。有什么办法可以防止这种情况吗?我看到有一个QProcess类,但无法启动它以显示命令提示符。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:7)

QProcess才是真正的答案。如果您想使用类似system()的内容,则必须将呼叫置于另一个线程中,或者使用popen或类似于您平台的内容。

QProcess确实有setReadChannel可用于显示您自己的控制台窗口以显示输出。

答案 1 :(得分:1)

您只需将该系统调用放在一个单独的线程中即可。

答案 2 :(得分:1)

如果您不需要任何输出,最简单的方法是使用QProcess :: startDetached()。

http://doc.qt.io/archives/4.6/qprocess.html#startDetached

如果你确实需要输出,那么使用包含输出的futurewatcher的QtConcurrent :: run将比导出QThread更少的开销/工作。