Вызов командной строки из спокойного приложения без замораживания?

В моем QT приложение GUI я называю командную строку через:

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

Это открывает командную строку (как, я хочу это к), но замораживает QT приложение GUI, пока я не закрываю командную строку. Разве там должен некоторым образом предотвратить это? Я видел, что существует класс QProcess, но не может заставить это поднимать командную строку.

Любая справка значительно ценилась бы!

5
задан Joel 15 July 2010 в 21:03
поделиться

3 ответа

QProcess - действительно ответ. Если вы хотите использовать что-то вроде system () , вам придется либо поместить вызов в другой поток, либо использовать popen или что-то подобное для ваших платформ.

QProcess имеет setReadChannel , который вы можете использовать для отображения собственного окна консоли, чтобы показать вывод.

7
ответ дан 14 December 2019 в 01:00
поделиться

Вам просто нужно поместить этот системный вызов в отдельный поток.

1
ответ дан 14 December 2019 в 01:00
поделиться

Если вам не нужен какой-либо вывод, проще всего использовать QProcess :: startDetached ().

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

Если вам действительно нужен вывод, QtConcurrent :: run с futurewatcher, содержащим вывод, потребует меньше накладных расходов / работы, чем вывод QThread.

1
ответ дан 14 December 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: