我创建了一个名为my-app
. 我通过在终端中输入来启动它:
./my-app
现在我想在同一个应用程序的两个独立窗口之间发送一个事件。所以,假设我有两个终端选项卡,我首先my-app
输入:
./my-app 1
./my-app 2
应用程序的第一个实例 ( ./my-app 1
) 是否可以向第二个实例发送事件,并且当第二个窗口接收到此事件以使用qDebug()
(可能使用传入的第二个参数args
)在终端中打印某些内容时?
如果是,如何?
Qt 提供了各种应用程序之间的通信方式。如果应用程序要在同一台机器上运行,那么我建议您看看使用QLocalServer和QLocalSocket。
应用程序的第一个实例可以查看它是否可以连接到 QLocalServer,如果失败,则创建自己的。
使用起来并不难,如果您查看 Qt 示例,您应该会找到一个 QLocalSocket 示例来演示如何使用它。
在 Windows 上,QLocalSockets 使用命名管道,因此非 Qt 应用程序也可以连接到它。
Qt 中的fortuneServer示例展示了如何使用 QTcpSocket 和 QTcpServer,并且 QLocalSocket 和 QLocalServer 的接口几乎相同
即使你使用同一个应用程序,你也会运行不止一个实例,因此你需要实现进程之间的通信。在这方面,我建议阅读 Qt 文档中的以下段落。