Ich mache eine Qt 5-Anwendung, die die Dateien eines bestimmten Typs liest, und ich möchte es auf eine Instanz beschränken. Und ich möchte Befehlszeilenargumente von der 2. Instanz an die 1. Instanz übergeben, um eine Datei zu öffnen, wenn der Benutzer auf diese Datei doppelklickt.Machen Sie die zweite Instanz einer Qt5-Anwendung Transfer Befehlszeilenargumente an die erste Instanz
Die meisten Informationen, die ich gefunden habe, befasst sich damit, die Ausführung der zweiten Instanz einfach zu deaktivieren und keine Daten weiterzuleiten. Ich habe QLocalServer
gefunden, aber anscheinend wird es nicht zerstört, wenn die Anwendung unter GNU/Linux abstürzt, ich habe auch boost::interprocess::message_queue
gefunden, aber es sieht so aus, als müsste ich einen dedizierten Thread haben, der daraus lesen wird. Hier ist das nächste, was ich gefunden habe: https://github.com/itay-grudev/SingleApplication/ Es bietet ein Signal, das ich hören kann, aber leider keine Möglichkeit bietet, die Befehlszeile zu übergeben.
Was ist die beste Lösung? Die Betriebssysteme, die mir wichtig sind, sind GNU/Linux, Mac, Windows und vorzugsweise Android.
Sie möchten QtSingleApplication. – peppe
@peppe Wenn Sie eine Schritt-für-Schritt-Lösung bereitstellen, werde ich es versuchen und akzeptieren, wenn es funktioniert. Ich habe bisher nur Qt 4-Versionen gefunden. – Lyberta
QtSingleApplication hat in Qt 5 eine Weile funktioniert. Sie können es von [hier] (https://code.qt.io/cgit/qt-solutions/qt-solutions.git/) oder seinem verbesserten Fork von [hier] (https://code.qt.io /cgit/qt-creator/qt-creator.git/tree/src/shared). Dann verwenden Sie es einfach anstelle von 'Q (Core) Application' und es gibt Ihnen Signale, wenn ein anderer Peer eine Verbindung zu Ihrer Instanz herstellt, und eine Methode, um Daten an die laufende Instanz zu senden. Ein Beispiel finden Sie [hier] (https://github.com/qtproject/qt-solutions/blob/master/qtsingleapplication/examples/loader/main.cpp#L128). – peppe