使用共享内存序列化信号/插槽QObject

时间:2017-07-11 16:31:28

标签: qt signals-slots qsharedmemory

我有两个共享内存片段的Qt个应用。

enter image description here

我希望能够从App2发出信号并从App1触发一个插槽。 首先,我需要使用QObject::connect()将App2信号链接到App1插槽。

有没有一种方法可以连接两个不同的Qt进程信号/插槽机制?我偶然发现了qt-remote-signals库发送远程信号,这是使用QDataStream序列化对象。 QSharedMemory使用相同的类。

或者我应该忘记连接任何东西并模拟信号/插槽行为?

  1. 从App2
  2. 写入内存段
  3. 每当从App1更改时,请阅读该段(如何知道何时更新?)
  4. 从App1发出自定义信号
  5. 从App1触发广告位
  6. 这听起来真实吗?我是共享内存的新手。

1 个答案:

答案 0 :(得分:1)

据我所知,您无法在进程之间连接信号/插槽。你也不可能知道自然的'如果另一个进程更改了QSharedMemory。

所以我认为你必须像你说的那样模拟它。

  1. 从App2
  2. 写入内存段
  3. 应用程序1可能会定期检查细分,以便了解应用程序2的更改。一旦完成更改,您就会直接触发插槽(您不需要信号)
  4. 如果您需要从App1立即响应(不会使App 1检查时间太小),您可以使用QLocalSocket / Server或D-Bus使它们通信,但在这种情况下,您可以全部使用它们并管理所有通信,使QSharedMemory不必要。