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
:
//create the signal
QDBusMessage signal = QDBusMessage::createSignal("/",
"com.canonical.Unity.LauncherEntry", "Update");
//set the application ID
signal << "application://firefox.desktop";
//set the properties
QVariantMap properties;
...
signal << properties;
//send the signal
QDBusConnection::sessionBus().send(signal);
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:
qint64 counter_value = 1;
properties["count-visible"] = true; //set the count to visible
properties["count"] = counter_value; //set the counter value
Fortschrittsanzeige
Um den Fortschrittsbalken festzulegen, müssen Sie die Eigenschaften so einstellen, dass der Fortschritt sichtbar ist, und ihm den gewünschten Doppelwert geben:
double progress_value = 0.5;
properties["progress-visible"] = true; //set the progress bar to visible
properties["progress"] = progress_value; //set the progress value
Kurze Liste
Die Quicklist kann mithilfe der Qt-Bibliothek dbusmenu festgelegt werden. Sie müssen die Header-Datei einschließen:
#include <dbusmenuexporter.h>
Die Quicklist wird als QMenu
Menü in Qt erstellt. Dieses Menü wird über ein Busmenü mit einem DBusMenuExporter
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:
QMenu *quicklist;
DBusMenuExporter *quicklist_exporter;
Dann in der Konstruktorfunktion:
quicklist = new QMenu(this);
//exports the menu over dbus using the object: /com/me/myapp/quicklist
quicklist_exporter = new DBusMenuExporter("/com/me/myapp/quicklist", quicklist);
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:
properties["quicklist"] = "/com/me/myapp/quicklist";
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:
#import the dbusmenu-qt library for quicklists
greaterThan(QT_MAJOR_VERSION, 4) {
INCLUDEPATH += /usr/include/dbusmenu-qt5/
LIBS += -ldbusmenu-qt5
} else {
INCLUDEPATH += /usr/include/dbusmenu-qt/
LIBS += -ldbusmenu-qt
}
Beispielanwendung
In diesem Github-Projekt finden Sie ein vollständiges Beispiel für die Verwendung aller Launcher-Funktionen von Qt .