如何让我的Qt控制台应用程序与另一个Qt gui应用程序通信?

时间:2015-08-16 16:53:38

标签: c++ qt qt-creator

我的项目需要有两个部分。输入来自Qt控制台窗口的第一部分。处理输入并将信号发送到Qt gui app(第二部分),相应地更新UI。我该如何实现?这些可以是同一个应用程序的一部分,还是我需要将两者分开并在两者之间进行通信?

请指导我必须使用的特定课程和功能。

我已经看过QProcess,但不确定这是否符合目的。

3 个答案:

答案 0 :(得分:0)

我认为在Qt中无法同时运行控制台和GUI应用程序。您可以尝试创建.exe文件,它将是您的控制台,另一个.exe文件将是GUI应用程序。

要从GUI应用程序运行控制台,您应该使用QProcess,您必须指定控制台可执行文件的绝对路径。

有关QProcess您可以找到here的更多信息。

答案 1 :(得分:0)

如果您使用的是UNIX或GNU / Linux系统,则可以使用QtDBus模块 您可以编写2个软件,一个使用控制台,另一个使用GUI,并通过D-Bus进行通信。您可以找到一些示例here

  

QtDBus模块是一个纯Unix库,可以使用D-Bus协议实现IPC。它将Qt的信号和插槽机制扩展到IPC级别,允许一个进程发出的信号连接到另一个进程的插槽。该D-Bus页面提供了有关如何使用QtDBus模块的详细信息。

此外,您可以使用Qt包装的TCP / IP套接字进行通信。这是一种便携式解决方案 Qt Fortune ServerQt Fortune Client是一个很好的书写和逐步解释的例子。

Qt提出的每个进程间通信(IPC)解决方案都是基于page提出的。

答案 2 :(得分:0)

作为Qt 5.9,有一个模块,目前处于技术预览名称QtRemoteObjects,为QObject提供Qt原生IPC,易于使用,可用于共享信号/插槽以及两个进程之间的模型< / p>