Faites en sorte que sniqt reconnaisse toutes les capacités du bac (ou créez un indicateur de travail dans Qt)

Voici mon ancien fil de discussion: comment créer un indicateur de travail avec Qt / C ++? où on m’a suggéré d’utiliser la bibliothèque QSystemTray pour créer une icône de plateau dans Ubuntu pour mon application.

Sniqt est un programme qui s’occupe du rest. Comme on le sait, Ubuntu s’est débarrassé des icons de plateau. Au lieu de cela, il utilise maintenant des indicateurs et uniquement des indicateurs. Sniqt convertit les icons 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 icons 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 des éclaircissements à ce sujet.

Unity, par choix, ne prend pas en charge ce que vous appelez des “icons de bacs correctes”. 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 une icône flottante sur le bureau, qui sera capable d’accepter les clics du milieu et du clic droit comme Dieu et Matthias Etsortingch le souhaitaient. Vous pouvez trouver un exemple simple de la procédure à suivre ici. c’est-à-dire si $ 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.