В моем QT приложение GUI я называю командную строку через:
system("lots.exe & of.exe && commands.exe");
Это открывает командную строку (как, я хочу это к), но замораживает QT приложение GUI, пока я не закрываю командную строку. Разве там должен некоторым образом предотвратить это? Я видел, что существует класс QProcess, но не может заставить это поднимать командную строку.
Любая справка значительно ценилась бы!
QProcess
- действительно ответ. Если вы хотите использовать что-то вроде system ()
, вам придется либо поместить вызов в другой поток, либо использовать popen
или что-то подобное для ваших платформ.
QProcess
имеет setReadChannel
, который вы можете использовать для отображения собственного окна консоли, чтобы показать вывод.
Вам просто нужно поместить этот системный вызов в отдельный поток.
Если вам не нужен какой-либо вывод, проще всего использовать QProcess :: startDetached ().
http://doc.qt.io/archives/4.6/qprocess.html#startDetached
Если вам действительно нужен вывод, QtConcurrent :: run с futurewatcher, содержащим вывод, потребует меньше накладных расходов / работы, чем вывод QThread.