2017-08-07 2 views
0

Je suis en train de mettre en œuvre un QComboBox, qui détient QIcon et QString, comme ceci:Masquer l'icône de l'étiquette de QComboBox

QComboBox.addItem(icon, label); 

Je veux que les icônes soient visibles dans la liste déroulante, mais pas dans la barre d'outils. Seule la chaîne doit être visible après la sélection de l'élément.

Y at-il un moyen facile de faire cela?

+0

Facile (mais un peu hackish): réimplémentez 'showPopup' et' hidePopup', et ajoutez/supprimez les icônes si nécessaire. – ekhumoro

+0

@ekhumoro Cela peut ne pas fonctionner pour mon scénario, car dans les deux cas, je ne veux pas que l'icône soit visible dans la barre d'outils. Si je l'implémente dans showPopup, la sélection prev affichera l'icône dans la barre d'outils, ce qui n'est pas ce que je veux. –

Répondre

0

Le meilleur moyen est de définir un délégué et de dessiner les éléments vous-même. Ensuite, vous pouvez choisir de dessiner ou non l'icône (decorationRole), vous pouvez choisir de ne pas dessiner l'icône pour l'index qui est l'index actuel. je pourrais trouver un exemple rapide sur la façon d'utiliser un délégué sur combobox: http://programmingexamples.net/wiki/Qt/Delegates/ComboBoxDelegate

Mais je crains qu'il ne soit pas le plus easist des façons. Bonne chance!