2015-10-16 3 views
0

Bonjour mes collègues développeurs!QCombobox - cacher le premier élément sur la liste déroulante

Je souhaite réaliser un QCombobox "Action" où les différentes options déclenchent une action au lieu de choisir une option. La liste déroulante dit quelque chose comme "Ajouter une propriété" et lorsque l'utilisateur clique dessus, il obtient les différentes propriétés à choisir. Si l'utilisateur clique sur l'un d'entre eux, il est ajouté à -whateverdoesntmatter-. La zone de liste modifiable revient à son état d'origine.

Le problème est que la première entrée "Ajouter une propriété" est affichée dans la liste déroulante de la liste déroulante, causant un peu de confusion pour l'utilisateur car ce n'est pas vraiment une action.

état normal:

[Add Property] 

état déroulant:

[Add Property] 
Add Property 
Length 
Width 
etc ... 

Par conséquent, je veux cacher la première option dès que le combobox tombe vers le bas pour obtenir ce comportement:

[Add Property] 
Length 
Width 
etc ... 

J'ai déjà essayé de sous-classer la liste déroulante et d'écraser showPopUp() et hidePopUp() - mais je ne pouvais pas comprendre comment obtenir mon comportement prévu.

Des idées? Merci!

+0

Vous devez travailler avec le modèle de combobox. –

+2

Premièrement, avez-vous * vraiment * besoin d'un QComboBox? Peut-être que vous êtes mieux/plus facile d'utiliser un 'QToolBar' avec des boutons d'outils déroulants. Ou juste un 'QToolButton' avec un' QMenu' associé. – Kamajii

+0

@SaZ J'ai essayé de le faire quand j'ai écrasé showPopUp() et hidePopUp() mais peut-être que j'ai raté quelque chose ... J'ai essayé de "prendre" le premier QabstractItem et de l'ajouter de nouveau sur hide. Peut-être que je manque certaines fonctionnalités du modèle. – CppChris

Répondre

1

Si vous n'êtes pas absolument besoin d'un QComboBox vous pourriez être mieux/plus facile de l'aide d'un QToolButton avec un QMenu associé et puis définissez popupMode de la touche à une valeur appropriée.

Vous pouvez même utiliser un QToolBar. Ajoutez simplement un QAction avec l'étiquette souhaitée (comme Ajouter la propriété), associez-y le menu via QAction::setMenu et dans la barre d'outils. La barre d'outils crée automatiquement les boutons de l'outil lui-même.

Pour accéder à la propriété popupMode, vous pouvez utiliser QToolBar::widgetForAction et le transformer en QToolButton.