Actualmente no hay una biblioteca específica para acceder a la funcionalidad del iniciador desde Qt C ++. Hay una biblioteca de libunidad, pero está orientada en gran medida, por lo que es relativamente inadecuada para Qt. Como se menciona en la otra respuesta, la forma más conveniente de integrarse con el iniciador es utilizar la API dbus de bajo nivel .
El concepto básico de cómo integrarse con el iniciador es enviar una señal al iniciador con un ID de aplicación y un conjunto de propiedades. El ID de la aplicación es el nombre del archivo .desktop, normalmente almacenado en /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);
Mostrador
Para establecer el contador, deberá establecer las propiedades de modo que el recuento sea visible y darle el valor entero deseado:
qint64 counter_value = 1;
properties["count-visible"] = true; //set the count to visible
properties["count"] = counter_value; //set the counter value
Barra de progreso
Para establecer la barra de progreso, deberá establecer las propiedades de modo que el progreso sea visible y darle el doble valor deseado:
double progress_value = 0.5;
properties["progress-visible"] = true; //set the progress bar to visible
properties["progress"] = progress_value; //set the progress value
Lista rápida
La lista rápida se puede configurar utilizando la biblioteca dbusmenu Qt. Deberá incluir el archivo de encabezado:
#include <dbusmenuexporter.h>
La lista rápida se crea como un QMenu
menú en Qt. Este menú se 'exporta' a través de dbusmenu usando un DBusMenuExporter
objeto. Al exportar, le da a este objeto una ruta única y luego hace referencia a esa ruta para indicarle al elemento del iniciador qué menú mostrar como lista rápida.
En su declaración de clase de ventana principal, agregue las siguientes variables de instancia:
QMenu *quicklist;
DBusMenuExporter *quicklist_exporter;
Luego, en la función constructora:
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);
Para agregar elementos al menú, utilice el método [addAction] (http: //qt-project.org/doc/qt-5.0/qtwidgets/qmenu.html#addAction) del menú para agregar [QAction] (http: / /qt-project.org/doc/qt-5.0/qtwidgets/qaction.html) objetos.
Para configurar la lista rápida del icono del iniciador, configure la propiedad 'lista rápida' de la señal:
properties["quicklist"] = "/com/me/myapp/quicklist";
Configurar el archivo del proyecto
Usted tendrá que configurar el archivo .pro para añadir soporte dbus: QT += dbus
. Para construir con soporte de lista rápida, necesitará tener instaladas las bibliotecas de desarrollo dbusmenu-qt ( libdbusmenu*dev
). Luego puede agregar lo siguiente al archivo del proyecto para incluir la biblioteca dbusmenu:
#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
}
Aplicación de ejemplo
Para ver un ejemplo completo con todas las funciones del iniciador de Qt, mira este proyecto de Github .