Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 使用共享内存序列化信号/插槽QObject_Qt_Signals Slots_Qsharedmemory - Fatal编程技术网

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

Qt 使用共享内存序列化信号/插槽QObject,qt,signals-slots,qsharedmemory,Qt,Signals Slots,Qsharedmemory,我有两个Qt应用程序共享一个内存段 我希望能够从App2发出信号并从App1触发插槽。 首先,我需要使用QObject::connect()将App2信号链接到App1插槽 有没有连接两个不同的Qt进程信号/插槽机制的好方法?我偶然发现库发送远程信号,它使用QDataStream序列化对象QSharedMemory使用相同的类 或者我应该忘记连接任何东西而只是模拟信号/插槽行为吗 从App2写入内存段 无论何时从App1更改段,都要阅读该段(如何知道何时更新?) 从App1发出自定义信号 从A

我有两个
Qt
应用程序共享一个内存段

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

有没有连接两个不同的
Qt
进程信号/插槽机制的好方法?我偶然发现库发送远程信号,它使用
QDataStream
序列化对象
QSharedMemory
使用相同的类

或者我应该忘记连接任何东西而只是模拟信号/插槽行为吗

  • 从App2写入内存段
  • 无论何时从App1更改段,都要阅读该段(如何知道何时更新?)
  • 从App1发出自定义信号
  • 从App1触发一个插槽

  • 听起来现实吗?我不熟悉共享记忆

    据我所知,进程之间无法连接信号/插槽。此外,如果另一个进程更改了QSharedMemory,您也无法“自然地”知道

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

  • 从App2写入内存段
  • 应用程序1可能会定期检查细分市场,以了解应用程序2的变化。更改完成后,直接触发插槽(实际上不需要信号)

  • 如果您需要App1的即时响应(而不使App1的检查时间太短),您可以让他们使用QLocalSocket/Server或D-Bus进行通信,但在这种情况下,您可以与他们一起管理所有通信,从而使QSharedMemory变得不必要

    听起来是我发现的一个很好的总结。我将挖掘D-Bus协议。