Вызов командной строки из приложения Qt без зависания? - PullRequest
5 голосов
/ 16 июля 2010

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

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

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

Любая помощь будет принята с благодарностью!

Ответы [ 3 ]

7 голосов
/ 16 июля 2010

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

1 голос
/ 19 июля 2010

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

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

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

1 голос
/ 16 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...