QCombobox - скрыть первый элемент в раскрывающемся списке

Здравствуйте коллеги-разработчики!

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

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

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

[Add Property]

Раскрывающееся состояние:

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

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

[Add Property]
Length
Width
etc ...

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

Идеи? Спасибо!


person CppChris    schedule 16.10.2015    source источник
comment
Вам нужно работать с моделью выпадающего списка.   -  person Dmitry Sazonov    schedule 16.10.2015
comment
Во-первых, вам действительно нужен QComboBox? Может быть, вам лучше/проще использовать QToolBar с раскрывающимися кнопками инструментов. Или просто QToolButton со связанным QMenu.   -  person Kamajii    schedule 16.10.2015
comment
@SaZ Я пытался сделать это, когда перезаписывал showPopUp() и hidePopUp(), но, возможно, я что-то пропустил ... Я попытался взять первый QabstractItem, а затем добавить его снова при скрытии. Возможно, мне не хватает некоторых функций модели.   -  person CppChris    schedule 16.10.2015
comment
@Kamaji Хорошая идея, я попробую. Раньше я не знал ToolButton, но кажется, что opoupMode MenuButtonPopUp движется в нужном мне направлении.   -  person CppChris    schedule 16.10.2015
comment
@Kamaji хорошо, это сработало отлично. Если вы хотите, вы можете добавить это как ответ, и я отмечу это как решение. Спасибо!   -  person CppChris    schedule 16.10.2015


Ответы (1)


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

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

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

person Kamajii    schedule 16.10.2015