QCombobox - 隐藏下拉列表中的第一项

QCombobox - hide first item on drop-down

各位开发者大家好!

我想实现一个 "Action" QCombobox,其中不同的选项触发一个动作而不是选择一个选项。组合框显示类似 "Add Property" 的内容,当用户单击它时,他会获得不同的属性以供选择。如果用户单击其中之一,它将被添加到-whateverdoesntmatter-。然后组合框切换回其原始状态。

问题是,第一个条目 "Add Property" 显示在组合框的下拉列表中,这给用户造成了一点困惑,因为它并不是真正的操作。

正常状态:

[Add Property]

下拉状态:

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

因此,我想在组合框下拉时隐藏第一个选项以实现此行为:

[Add Property]
Length
Width
etc ...

我已经尝试对组合框进行子类化并覆盖 showPopUp() 和 hidePopUp() - 但我无法弄清楚如何获得预期的行为。

想法?谢谢!

如果您不是绝对需要 QComboBox,您可能会 better/easier 使用 QToolButton 关联 QMenu,然后设置按钮的 popupMode 到适当的值。

您甚至可以使用 QToolBar。只需添加带有所需标签的 QAction(如 添加 属性),通过 QAction::setMenu 将菜单​​关联到它,然后将其关联到工具栏。工具栏将自动创建工具按钮。

要访问 popupMode 属性,您可以使用 QToolBar::widgetForAction 并将其转换为 QToolButton