J'essaie de développer un programme en QT avec QT SDK. Hier, je lisais sur l'API Unity Launcher sur le site officiel ubuntu. Mais il n'y a d'exemple que pour Vala et python. Est-il possible d'utiliser l'API Unity Launcher (listes rapides, compteurs et barres de progression) avec le langage C ++ et si c'est possible, veuillez poster un exemple.
10
Réponses:
J'apprends également Qt et j'ai essayé de trouver un moyen d'utiliser l'API Unity dans Qt, je ne pouvais utiliser que l'API Dbus, mais pas de chance avec Quicklist car il a besoin d'un DbusMenu et je ne sais pas comment l'implémenter (toujours en train d'apprendre :) ).
C'est l'exemple que j'ai créé pour moi-même et j'espère qu'il sera utile aux autres. Peut-être que les développeurs Unity peuvent aider à corriger / corriger / ajouter un nouveau code (liste rapide) :)
téléchargez l'exemple ici http://ubuntuone.com/1SLDPcN9OhrU6LD1wgDs3r
la source
QT += dbus
)/usr/include/unity/unity/unity.h:7: error: glib.h: No such file or directory
), mais j'ailibglib2.0-dev
installé.Il n'existe pas actuellement de bibliothèque spécifique pour accéder aux fonctionnalités du lanceur à partir de Qt C ++. Il existe une bibliothèque de libunity mais elle est fortement orientée glib et est donc relativement peu adaptée à Qt. Comme mentionné dans l'autre réponse, la façon la plus pratique de s'intégrer au lanceur est d'utiliser l' API dbus de bas niveau .
Le concept de base de l'intégration avec le lanceur est d'envoyer un signal au lanceur avec un ID d'application et un ensemble de propriétés. L'ID d'application est le nom de fichier du fichier .desktop, normalement stocké dans
/usr/share/applications
:Compteur
Pour définir le compteur, vous devrez définir les propriétés de sorte que le nombre soit visible et lui donner la valeur entière souhaitée:
Barre de progression
Pour définir la barre de progression, vous devrez définir les propriétés de manière à ce que la progression soit visible et lui donner la valeur double souhaitée:
Liste rapide
La liste rapide peut être définie à l'aide de la bibliothèque dbusmenu Qt. Vous devrez inclure le fichier d'en-tête:
La liste rapide est créée sous forme de
QMenu
menu dans Qt. Ce menu est «exporté» via dbusmenu à l'aide d'unDBusMenuExporter
objet. Lors de l'exportation, vous donnez à cet objet un chemin unique, puis référencez ce chemin pour indiquer à l'élément du lanceur le menu à afficher sous forme de liste rapide.Dans votre déclaration de classe de fenêtre principale, ajoutez les variables d'instance suivantes:
Ensuite, dans la fonction constructeur:
Pour ajouter des éléments au menu, utilisez la méthode [addAction] (http: //qt-project.org/doc/qt-5.0/qtwidgets/qmenu.html#addAction) du menu pour ajouter [QAction] (http: / /qt-project.org/doc/qt-5.0/qtwidgets/qaction.html) objets.
Pour définir la liste rapide de l'icône du lanceur, définissez la propriété «liste rapide» du signal:
Configuration du fichier de projet
Vous devrez configurer le fichier .pro pour ajouter le support dbus:
QT += dbus
. Pour construire avec la prise en charge de la liste rapide, vous devrez installer les bibliothèques de développement dbusmenu-qt (libdbusmenu*dev
). Vous pouvez ensuite ajouter ce qui suit au fichier de projet pour inclure la bibliothèque dbusmenu:Exemple d'application
Pour voir un exemple complet utilisant toutes les fonctionnalités du lanceur de Qt, regardez ce projet Github .
la source