我的项目需要有两个部分。输入来自Qt控制台窗口的第一部分。处理输入并将信号发送到Qt gui app(第二部分),相应地更新UI。我该如何实现?这些可以是同一个应用程序的一部分,还是我需要将两者分开并在两者之间进行通信?
请指导我必须使用的特定课程和功能。
我已经看过QProcess,但不确定这是否符合目的。
答案 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 Server和Qt Fortune Client是一个很好的书写和逐步解释的例子。
Qt提出的每个进程间通信(IPC)解决方案都是基于page提出的。
答案 2 :(得分:0)
作为Qt 5.9,有一个模块,目前处于技术预览名称QtRemoteObjects,为QObject提供Qt原生IPC,易于使用,可用于共享信号/插槽以及两个进程之间的模型< / p>