2015-10-16 11 views
0

Привет, коллеги-разработчики!QCombobox - скрыть первый элемент на выпадающем списке

Я хочу реализовать QCombobox «Action», где различные параметры запускают действие вместо выбора опции. Комбобокс говорит что-то вроде «Добавить свойство», и когда пользователь нажимает на него, он получает разные свойства на выбор. Если пользователь нажимает на один из них, он добавляется к -whateverdoesntmatter-. Комбобокс, чем возврат в исходное состояние.

Проблема заключается в том, что первая запись «Добавить свойство» отображается в выпадающем списке combobox, что вызывает у пользователя некоторую путаницу для пользователя, поскольку это не действие.

Нормальное состояние:

[Add Property] 

Выпадающее состояние:

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

Поэтому я хочу, чтобы скрыть первый вариант, как только выпадающий падает вниз, чтобы достичь такого поведения:

[Add Property] 
Length 
Width 
etc ... 

Я уже пробовал с подклассификацией combobox и переписыванием showPopUp() и hidePopUp() - но я не мог понять, как получить мое намеренное поведение.

Идеи? Благодаря!

+0

Вам необходимо работать с моделью combobox. –

+2

Во-первых, вы действительно хотите «QComboBox»? Возможно, вам лучше/проще с помощью кнопки QToolBar с раскрывающимися инструментами. Или просто 'QToolButton' с ассоциированным' QMenu'. – Kamajii

+0

@SaZ Я попытался сделать это, когда переписал showPopUp() и hidePopUp(), но, возможно, я что-то пропустил ... Я попытался «взять» первый QabstractItem и добавить его снова в hide. Возможно, я пропускаю некоторые функциональные возможности модели. – CppChris

ответ

1

Если вы не совсем нужен QComboBox вы могли бы быть лучше/легче от использования QToolButton с QMenu, связанной, а затем установить кнопки он popupMode соответствующее значение.

Возможно, вы можете использовать QToolBar. Просто добавьте QAction с нужной меткой (например, Добавить свойство), связать с ним меню через QAction::setMenu и у него на панели инструментов. Панель инструментов автоматически создаст сами кнопки инструментов.

Чтобы получить доступ к объекту popupMode, вы можете использовать QToolBar::widgetForAction и направить его на QToolButton.