我有2个节目。控制台和QT。控制台程序应该制作一些数据,而qt程序应该比显示这些数据。但这应该是单独的程序,我不知道如何告诉QT程序从我的控制台做什么。两个程序是本地的,Qt程序总是在运行(因此我不能每次都运行它),并且只在需要时才启动控制台。所以问题是 - 如何在控制台程序完成后在Qt中执行某些操作? 附:控制台程序生成一个Qt程序可以读取和显示的文件。 我正在使用Windows。
答案 0 :(得分:3)
您可以考虑使用QFileSystemWatcher之类的内容来轮询特定目录中的更改,然后让控制台程序在那里写入文件。这样,当目录内容发生变化时,Qt程序会收到通知。
答案 1 :(得分:3)
Int Qt,您可以使用QProcess
启动控制台进程。该类有一个finished
信号,您可以将其连接到应用程序对象中的插槽。然后,当控制台进程完成时,finished
信号将触发,并调用您的插槽函数。此时,您可以读取输出文件。
这比QFileSystemWatcher
更有效,因为您直接观看相关事件(控制台程序完成)。
答案 2 :(得分:1)
进程间通信(IPC)是您正在寻找的解决方案。
MSDN文档可用here,其中包含有关在您的应用程序中实现此功能的更多详细信息,以及代码示例。
答案 3 :(得分:0)
这种技术称为“屏幕抓取”。您是通过将控制台应用程序的stdout连接到Qt应用程序输入来执行此操作。 看http://doc.qt.nokia.com/latest/qprocess.html
答案 4 :(得分:0)
看看QSharedMemory:http://doc.qt.nokia.com/4.7-snapshot/qsharedmemory.html。它允许线程间和进程间通信。
关于如何使用QSharedMemory的一个非常好的简短示例在这里:http://doc.trolltech.com/main-snapshot/ipc-sharedmemory.html