2011-05-02 67 views
0

我有2個程序。控制檯和QT。控制檯程序應該創建一些數據,而qt程序應該比顯示這些數據。但是這應該是單獨的程序,我不知道如何告訴QT程序從我的控制檯執行某些操作。兩個程序是本地的,Qt程序總是在運行(所以我不能每次都運行它),而且控制檯只在需要時纔會執行。所以問題是 - 如何在控制檯程序完成後在Qt中執行某些操作? P.S.控制檯程序生成一個Qt程序可以讀取並顯示的文件。 我正在使用Windows。如何連接兩個程序(C++,qt)

+0

考慮過使用[DBUS(http://doc.trolltech.com/4.6/intro-to-dbus.html)廣告間過程溝通? – DreamOfMirrors 2011-05-02 10:05:43

回答

3

您可能會考慮使用諸如QFileSystemWatcher之類的方法來輪詢特定目錄中的更改,然後讓您的控制檯程序在其中寫入文件。這樣,當目錄內容發生變化時,Qt程序就會收到通知。

1

進程間通信(IPC)是您正在尋找的解決方案。

MSDN文檔可用here,包含有關在您的應用程序中實現此功能的更多詳細信息以及代碼示例。

3

int Qt,你可以用QProcess啓動控制檯進程。該類有一個finished信號,您可以連接到應用程序對象的插槽。然後,當控制檯進程結束時,finished信號觸發,並調用您的插槽功能。此時您可以讀取輸出文件。

這比QFileSystemWatcher效率更高,因爲您直接觀看相關事件(控制檯程序結束)。

+0

我其實也喜歡這個,而不是我自己的解決方案,但是很自然的,控制檯程序必須從Qt程序內部啓動,這使得非交互式(例如預定)運行更加複雜。當然,它也可以支持這兩種方法。 – Ilkka 2011-05-02 11:39:32