Ich versuche, mit QT SDK ein Programm in QT zu entwickeln. Gestern habe ich auf der offiziellen Ubuntu-Website über Unity Launcher API gelesen . Aber es gibt nur ein Beispiel für Vala und Python. Es ist möglich, die Unity Launcher-API (Quicklists, Zähler und Fortschrittsbalken) in C ++ zu verwenden. Wenn dies möglich ist, veröffentlichen Sie bitte ein Beispiel.
application-development
qt
c++
unity
kv1dr
quelle
quelle
Antworten:
Ich lerne auch Qt und habe versucht, einen Weg zu finden, die Unity-API in Qt zu verwenden. Ich konnte nur die Dbus-API verwenden, aber kein Glück mit Quicklist, da es ein DbusMenu benötigt und ich nicht weiß, wie ich das implementieren soll (lerne noch :) ).
Dies ist das Beispiel, das ich für mich selbst erstellt habe, und ich hoffe, dass es für andere nützlich ist. Vielleicht können Unity-Entwickler helfen, neuen Code (Quicklist) zu korrigieren / zu reparieren / hinzuzufügen :)
Laden Sie das Beispiel hier herunter http://ubuntuone.com/1SLDPcN9OhrU6LD1wgDs3r
quelle
QT += dbus
/usr/include/unity/unity/unity.h:7: error: glib.h: No such file or directory
), aber ich habelibglib2.0-dev
installiert.Derzeit gibt es keine spezielle Bibliothek für den Zugriff auf Launcher-Funktionen von Qt C ++. Es gibt eine Libunity-Bibliothek, die jedoch stark glib-orientiert ist und daher für Qt relativ ungeeignet ist. Wie in der anderen Antwort erwähnt, besteht die bequemste Möglichkeit zur Integration in den Launcher in der Verwendung der Low-Level-dbus-API .
Das Grundkonzept für die Integration in den Launcher besteht darin, dass Sie ein Signal mit einer Anwendungs-ID und einer Reihe von Eigenschaften an den Launcher senden. Die Anwendungs-ID ist der Dateiname der .desktop-Datei, die normalerweise gespeichert wird in
/usr/share/applications
:Zähler
Um den Zähler zu setzen, müssen Sie die Eigenschaften so einstellen, dass die Anzahl sichtbar ist, und ihm den gewünschten ganzzahligen Wert geben:
Fortschrittsanzeige
Um den Fortschrittsbalken festzulegen, müssen Sie die Eigenschaften so einstellen, dass der Fortschritt sichtbar ist, und ihm den gewünschten Doppelwert geben:
Kurze Liste
Die Quicklist kann mithilfe der Qt-Bibliothek dbusmenu festgelegt werden. Sie müssen die Header-Datei einschließen:
Die Quicklist wird als
QMenu
Menü in Qt erstellt. Dieses Menü wird über ein Busmenü mit einemDBusMenuExporter
Objekt 'exportiert' . Beim Exportieren geben Sie diesem Objekt einen eindeutigen Pfad und verweisen dann auf diesen Pfad, um dem Startelement mitzuteilen, welches Menü als Quicklist angezeigt werden soll.Fügen Sie in der Deklaration Ihrer Hauptfensterklasse die folgenden Instanzvariablen hinzu:
Dann in der Konstruktorfunktion:
Verwenden Sie zum Hinzufügen von Elementen zum Menü die Methode [addAction] (http: //qt-project.org/doc/qt-5.0/qtwidgets/qmenu.html#addAction) des Menüs, um [QAction] (http: /) hinzuzufügen. /qt-project.org/doc/qt-5.0/qtwidgets/qaction.html) Objekte.
Um die Quicklist des Startsymbols festzulegen, legen Sie die Eigenschaft 'quicklist' des Signals fest:
Projektdatei konfigurieren
Sie müssen die .pro-Datei konfigurieren, um dbus-Unterstützung hinzuzufügen :
QT += dbus
. Um mit Quicklist-Unterstützung erstellen zu können, müssen die Entwicklungsbibliotheken von dbusmenu-qt (libdbusmenu*dev
) installiert sein. Anschließend können Sie der Projektdatei Folgendes hinzufügen, um die dbusmenu-Bibliothek einzuschließen:Beispielanwendung
In diesem Github-Projekt finden Sie ein vollständiges Beispiel für die Verwendung aller Launcher-Funktionen von Qt .
quelle