2010-12-15 107 views
6

J'essaie d'afficher une icône "avertissement" à côté d'un QLineEdit s'il contient des données invalides.
J'essayais d'utiliser QStyle::standardIcon(QStyle::SP_MessageBoxWarning) pour obtenir un pixmap standard et le placer à l'intérieur d'un , et dans certains cas cela semble fonctionner. Lors de l'exécution de Gnome, l'icône s'affiche correctement, mais si vous utilisez KDE, aucune icône ne s'affiche. Je suppose que l'icône d'avertissement n'est tout simplement pas incluse dans le style utilisé sous KDE.Afficher l'icône d'avertissement standard dans Qt4

Quelle est la manière préférée d'afficher une icône d'avertissement "standard" dans Qt? Existe-t-il une liste indiquant quelles icônes sont incluses dans chaque style? Comment puis-je obtenir une icône d'un style qui, je le sais, inclut l'icône d'avertissement?

Répondre

9

La dernière fois que j'ai eu un problème similaire, j'ai trouvé this Qt labs discussion utile. Il m'a informé que QIcon maintenant (depuis 4.6 je crois) a une fonction QIcon::fromTheme qui vous permet de charger une icône basée sur the Freedesktop.org Icon Naming Specification, et en plus fournir une icône de secours à utiliser si le thème en cours n'a pas l'icône en question. Ce que j'ai fait était alors d'inclure quelques icônes très basiques pour l'utilisation comme repli, et en général spécifier des icônes seulement par leurs noms de freedesktop. Cela donnait presque toujours un aspect cohérent avec le thème, et le programme fonctionnait toujours dans les cas où il manquait des icônes. En ce qui concerne l'icône d'avertissement, je suppose/espère que chaque thème doit avoir celui nommé "dialogue-avertissement", et que c'est ce que vous cherchez.

J'espère que cela aide.

Modifier: Oh, et si vous ne savez pas, il peut être utile d'examiner par exemple le Tango icon set pour avoir une idée approximative de ce que les noms correspondent à Freedesktop (bien qu'il soit bien entendu THEME- dépendant).

5

Qt est bundle a number of images que sont les ressources que vous pouvez utiliser dans votre propre code. Ces images sont un surensemble de celles disponibles via standardIcon(). Vous souhaiterez peut-être vérifier que l'image en question est incluse dans les versions de Qt que vous ciblez.

Le résultat final pourrait ressembler à ce qui suit:

QPixmap pixmap(":/trolltech/styles/commonstyle/images/up-128.png"); 
// use pixmap as needed 
+0

Intéressant. Je peux imaginer que ce soit très utile pour fournir '' QIcon :: fromTheme'' avec un retour. – gspr