Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/11/2011, à 23:14

ti_tux

Résolu[Qt] ajouter sa propre icone dans QSystemTrayIcon::showMessage()

Bonjour !

Lors de l'appel de la fonction QSystemTrayIcon::showMessage() , il faut passer en argument une icone appartenant à MessageIcon.

void QSystemTrayIcon::showMessage ( const QString & title, const QString & message, MessageIcon icon = Information, int millisecondsTimeoutHint = 10000 )

Soit ! Mais les icones standards ne me conviennent pas. Comment faire pour mettre une icone "maison" à la place d'un MessageIcon ?

Dernière modification par ti_tux (Le 17/12/2011, à 03:09)


Venez traduire KDE (doc, appli, pages web) en français http://fr.l10n.kde.org/

Hors ligne

#2 Le 30/11/2011, à 12:30

VinsS

Re : Résolu[Qt] ajouter sa propre icone dans QSystemTrayIcon::showMessage()

Salut,

Il te faudra trouver le moyen d'accéder à QBalloonTip:

http://cep.xor.aps.anl.gov/software/qt4 … n_tip.html

Pas simple manifestement :

http://lists.trolltech.com/qt-interest/ … 802-0.html

C'est vrai que ces icônes ne sont pas spécialement 'funny'.
Une autre solution est de faire un bug report pour demander à pouvoir créer ses propres MessageIcon.


Vincent
Oqapy      Qarte      PaQager

Hors ligne

#3 Le 02/12/2011, à 00:40

ti_tux

Re : Résolu[Qt] ajouter sa propre icone dans QSystemTrayIcon::showMessage()

Oui un petit rapport de bug s'impose !

Néanmoins, sur les conseils de alexisdm du forum du zero, j'ai créé une classe style dérivant de QProxystyle, et j'ai réimplémenté la fonction 

QIcon standardIconImplementation ( StandardPixmap icone_std,  const QStyleOption * ption = 0, const QWidget *widget = 0 ) const 

Ca me permet de changer une des icones standards de QStyle. Ca fonctionne parfaitement avec un environnement LXDE, l'icone de la QMessageBox::information par exemple est bien remplacée par mon icone perso ainsi que l'icone affichée lors de l'appel de showMessage du QSystemTrayIcon.

Par contre sous KDE, ça ne fonctionne qu'à moitié : l'icone est bien remplacée dans les QMessageBox::information mais pas lors de l'appel de showMessage...

C'est quand même un comble que cela fonctionne sous LXDE et pas sous KDE... ça m'échappe totalement...


Venez traduire KDE (doc, appli, pages web) en français http://fr.l10n.kde.org/

Hors ligne

#4 Le 02/12/2011, à 17:24

ti_tux

Re : Résolu[Qt] ajouter sa propre icone dans QSystemTrayIcon::showMessage()

Une autre solution qui fonctionne à coup sûr sur KDE est de se servir de notify-send à travers un QProcess... Pas joli du tout mais ça fonctionne.


Venez traduire KDE (doc, appli, pages web) en français http://fr.l10n.kde.org/

Hors ligne

#5 Le 17/12/2011, à 03:09

ti_tux

Re : Résolu[Qt] ajouter sa propre icone dans QSystemTrayIcon::showMessage()

J'ai résolu mes histoires d'icones dans les showMessage et dans les QAction du QSystemTrayIcon grâce en partie au dév du paquet  sni-qt. Pour ceux qui auront peut-être les memes soucis que moi, la suite est pour vous.

Pour avoir une autre icone dans les QSystemTrayIcon::showMessage() que celles par défaut (information, warning, critical) dans un environnement KDE **, le plus simple est de passer par l'API DBus. Ce qui, je l'admets bien volontiers, est bien plus propre qu'un notify-send. Le fait que mon appli fonctionnait sous LXDE et moins bien sous KDE venait du paquet sni-qt installé sous KDE. Ce paquet permet aux applications qt de pouvoir s'installer dans le systray et d'utiliser le systeme de notification de KDE entre autres. Une limitation de ce paquet est le changement des icones dans les messages de notification. Je pouvais toujours définir une autre icone, il y avait sni-qt derrière qui avait le dernier mot et qui ne prévoit donc que l'utilisation de 3 icones standards pour le moment...Utiliser dbus est le plus simple et portable (enfin tant qu'on reste sous Gnu/Linux).

Je mettais des icones dans mon menu de QAction dans le QSystemTrayIcon. Sous LXDE, je voyais bien ces icones et pas sous KDE... toujours sni-qt on n'en sort pas ! Enfin indirectement sni-qt. Puisque sni-qt s'appuye sur dbusmenu-qt qui ne supporte pas les icones perso.(enfin pour l'instant). Par contre, on peut ruser. dbusmenu-qt supporte les icones des themes. Il suffit donc de définir les icones en passant par QIcon::fromTheme() et utiliser les icones de notre theme ou alors d'installer nos icones perso dans le répertoire des icones de notre theme.

**(dérivé d'ubuntu puisque sni-qt fonctionne que si Qt est patché avec qsystemtrayicon-plugin-system-4.7.4.diff qui n'est a priori pas adopté par les autres distros (Fedora, Suse, Mandriva....) mais ça pourrait changer à partir de Qt 5)


Venez traduire KDE (doc, appli, pages web) en français http://fr.l10n.kde.org/

Hors ligne