2017-07-11 12 views
0

メモリセグメントを共有する2つのQtアプリがあります。共有メモリを使用して信号/スロットQObjectをシリアル化

enter image description here

IはApp2のからの信号を発するとのApp1からスロットをトリガできるようにしたいです。 まず、App2信号をApp1スロットにリンクするには、QObject::connect()を使用する必要があります。

2つの異なるQtプロセスシグナル/スロットメカニズムを接続する良い方法はありますか?私はqt-remote-signalsライブラリを見つけて、QDataStreamを使ってオブジェクトをシリアライズするリモートシグナルを送信しました。 QSharedMemoryは同じクラスを使用します。

また、何かを接続することを忘れて、シグナル/スロットの動作をシミュレートするだけでいいですか? (それが更新されたときにどのように知っている?)App2のからメモリ・セグメント

  • それはApp1のから変更するたびにセグメントを読んで

    1. 書き込みは
    2. はApp1の
    3. トリガスロットからからカスタムシグナルを発しますApp1

    これは現実的ですか?私は共有メモリが初めてです。

  • 答えて

    1

    私が知る限り、プロセス間でSignal/Slotを接続することはできません。また、別のプロセスがQSharedMemoryを変更した場合、あなたは 'naturaly'を知ることができません。

    だから、あなたが言ったようにそれをシミュレートする必要があると思います。

    1. App2の
    2. からメモリ・セグメントにおける書き込み
    3. アプリケーション1は、変更が行われるとのApp 2からの変更を意識することに、定期的にセグメントをチェックすることができ、あなたが直接あなたがいない(スロットをトリガー本当に

    )信号を必要とするあなたは即座に応答(APP 1確認時間があまりにも小さくすることなし)のApp1からが必要な場合は、あなたがそれらをQLocalSocket/ServerまたはD-バスを使用してcomunicate作ることができ、ブチンその場合は、あなたが行くことができますQSharedMemoryを不必要なものにしてしまいます。

    +0

    私が見つけたものの良いサマリーが好きです。私はD-Busプロトコルを掘り下げます。 –

    関連する問題