在我的Qt GUI应用程序中,我通过以下方法调用命令提示符:
system("lots.exe & of.exe && commands.exe");
它打开命令提示符(就像我想要的那样),但冻结Qt GUI应用程序,直到我关闭命令提示符。有什么办法可以防止这种情况吗?我看到有一个QProcess类,但无法启动它以显示命令提示符。
非常感谢任何帮助!
答案 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更少的开销/工作。