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

How do I get my Qt console app to communicate with another Qt gui app?

本文关键字:应用程序 Qt 另一个 gui 通信 控制台 我的      更新时间:2023-10-16

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

请告诉我必须使用的具体类和函数。

我看了一下QProcess,但不确定它是否能达到目的。

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

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

关于QProcess的更多信息可以在这里找到

如果您在UNIX或GNU/Linux系统上工作,您可以使用QtDBus模块。
您可以编写两个软件,一个使用控制台,另一个使用GUI,并通过D-Bus进行通信。你可以在这里找到一些例子。

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

也可以使用Qt封装的TCP/IP套接字进行通信。这是一个便携的解决方案。
Qt财富服务器和Qt财富客户端是一个很好的例子,并一步一步地解释。

Qt提出的进程间通信(IPC)的所有解决方案都在本页给出。

作为Qt 5.9,有一个模块目前处于技术预览名称QtRemoteObjects下,它为QObjects提供Qt原生IPC,它易于使用,可用于在两个进程之间共享信号/插槽和模型