特定のタイプのファイルを読み込むQt 5アプリケーションを作成していますが、これを1つのインスタンスに制限したいとします。そして、私はコマンドライン引数を第2インスタンスから第1に転送して、ユーザーがそのファイルをダブルクリックしたときにファイルを開くようにします。Qt5アプリケーションの2番目のインスタンスを最初のインスタンスに転送するコマンドライン引数を
ほとんどの情報は、2番目のインスタンスの実行とデータの受け渡しを無効にするというものです。私はQLocalServer
を見つけましたが、明らかにアプリケーションがGNU/Linuxでクラッシュしたときには破棄されませんでした。また、boost::interprocess::message_queue
が見つかりましたが、そこから読み取る専用のスレッドが必要です。ここに私が見つけた最も近いものがあります:https://github.com/itay-grudev/SingleApplication/それは私が聞くことができる信号を提供しますが、残念ながらコマンドラインを渡すためのオプションを提供していません。
最適なソリューションは何ですか?私が気にするOSは、GNU/Linux、Mac、Windows、そして好ましくはAndroidです。
QtSingleApplicationが必要です。 – peppe
@peppeステップバイステップのソリューションを提供するなら、私はそれを試して、動作すればそれを受け入れます。私はこの前にQt 4のバージョンしか見つけなかった。 – Lyberta
QtSingleApplicationはQt 5でしばらく働いています。あなたは[ここ](https://code.qt.io/cgit/qt-solutions/qt-solutions.git/)またはその改良されたフォークを[ここ](https://code.qt.io)から得ることができます。 /cgit/qt-creator/qt-creator.git/tree/src/shared)。次に、 'Q(Core)Application'の代わりに使うだけで、別のピアがあなたのインスタンスに接続したときにシグナルを出し、実行中のインスタンスにデータを送信するメソッドを提供します。例については、[here](https://github.com/qtproject/qt-solutions/blob/master/qtsingleapplication/examples/loader/main.cpp#L128)を参照してください。 – peppe