как соединить две программы (c ++, qt) - PullRequest
0 голосов
/ 02 мая 2011

У меня 2 программы. Консоль и QT. Консольная программа должна внести некоторые данные, а программа qt должна затем показать эти данные. Но это должны быть отдельные программы, и я не знаю, как я могу сказать программе QT сделать что-то из моей консоли. Две программы являются локальными, и программа Qt всегда запущена (так что я не могу просто запускать ее каждый раз), а консоль запускается только при необходимости. Итак, вопрос - как я могу выполнить что-то в Qt после завершения консольной программы? Постскриптум Консольная программа создает файл, который программа Qt может прочитать и затем отобразить. Я использую Windows.

Ответы [ 5 ]

4 голосов
/ 02 мая 2011

Int Qt, вы можете запустить консольный процесс с QProcess.Этот класс имеет сигнал finished, который можно подключить к слоту в объекте приложения.Затем, когда процесс консоли завершается, срабатывает сигнал finished, и вызывается функция вашего слота.В этот момент вы можете прочитать выходной файл.

Это более эффективно, чем QFileSystemWatcher, потому что вы непосредственно смотрите соответствующее событие (консольная программа завершается).

3 голосов
/ 02 мая 2011

Вы можете использовать что-то вроде QFileSystemWatcher , чтобы запросить изменения в определенном каталоге, а затем попросите консольную программу записать туда файл.Таким образом, программа Qt получит уведомление, когда содержимое каталога изменится.

1 голос
/ 02 мая 2011

Межпроцессное взаимодействие (IPC) - это решение, которое вы ищете.

Документация MSDN доступна здесь , содержащая более подробную информацию о реализации этого в вашемприложения, а также примеры кода.

0 голосов
/ 12 мая 2011

Взгляните на QSharedMemory: http://doc.qt.nokia.com/4.7-snapshot/qsharedmemory.html. Он допускает межпотоковое и межпроцессное взаимодействие.

Очень хороший и короткий пример того, как использовать QSharedMemory, приведен здесь: http://doc.trolltech.com/main-snapshot/ipc-sharedmemory.html

0 голосов
/ 02 мая 2011

Эта техника называется "Соскоб экрана".Вы делаете это, подключая стандартный вывод консольного приложения к входу приложений Qt.Посмотрите на http://doc.qt.nokia.com/latest/qprocess.html

...