Voici mon ancien fil de discussion: Comment créer un indicateur de travail avec Qt/C++? où il m'a été suggéré d'utiliser la bibliothèque QSystemTray pour créer une icône de barre d'état sous Ubuntu pour mon application.
Sniqt est un programme qui s'occupe du reste. Comme on le sait, Ubuntu s’est débarrassé des icônes de plateau. Au lieu de cela, il utilise maintenant des indicateurs et uniquement des indicateurs. Sniqt convertit les icônes du bac Qt en indicateurs de travail.
Le problème est qu'il ne fait pas une conversion très décente. Des actions comme un simple clic, un clic du milieu, etc. ne fonctionnent pas, contrairement aux systèmes prenant en charge les icônes de bac.
Existe-t-il un moyen de récupérer ces actions? Puis-je utiliser l'icône QSystemTray tout en conservant ces actions intéressantes (et très utiles dans mon cas) sous Ubuntu?
Je serais heureux de connaître la réponse à l'autre sujet dont j'ai parlé plus tôt (comment créer un indicateur de travail à l'aide des bibliothèques GTK et empêcher le blocage), également.
Lien pour le bogue Sniqt: https://bugs.launchpad.net/sni-qt/+bug/1027652
Il semble que Qt ne supporte pas cette chose, du moins sur Ubuntu Unity, même si son signal est 'activé'. Donc, je vous recommande d'utiliser GTK et un trayicon normal, je ne vois aucune alternative avec Qt. Vous pouvez contacter les développeurs de Qt pour obtenir des éclaircissements à ce sujet.
Unity, par choix, ne prend pas en charge ce que vous appelez des "icônes de plateau correct". C'est des indicateurs ou rien. De là, vous avez plusieurs options:
Faites avec les capacités d'indicateur limitées. Vous pouvez définir le menu qui sera utilisé par votre indicateur avec la méthode standard QSystemTray.setContextMenu ().
Détachez entièrement votre application du systray. Au fur et à mesure, transformez-le en icône flottante sur le bureau, ce qui permettra d’accepter les clics du milieu et du bouton droit de la souris comme Dieu et Matthias Ettrich le souhaitaient. Vous pouvez trouver un exemple simple de la procédure à suivre ici: http://kde-apps.org/content/show.php/KEyes?content=5149 (Faites-le uniquement si vous détectez c’est-à-dire que $ DESKTOP_SESSION est défini sur 'ubuntu'.)
Déclarez Unity non pris en charge. Ce n'est pas une très bonne option.
Que vous souhaitiez choisir l'option 1 ou 2 dépend principalement de ce que votre application fait.