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

时间:2015-10-16 10:31:25

标签: c++ qt qt5 usability qcombobox

你好开发人员了!

我想实现一个"行动" QCombobox,其中不同的选项触发操作而不是选择选项。组合框说的是" Add Property"当用户点击它时,他会获得不同的属性供您选择。如果用户单击其中一个,则会将其添加到-whateverdoesntmatter-。组合框比切换回它的原始状态。

问题是,第一个条目"添加属性"在组合框的下拉列表中显示,因为它实际上不是一个动作,因此给用户带来一些混乱。

正常状态:

[Add Property]

下拉状态:

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

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

[Add Property]
Length
Width
etc ...

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

想法?谢谢!

1 个答案:

答案 0 :(得分:1)

如果您不是绝对需要QComboBox,那么使用与QToolButton相关联的QMenu可能会更好/更轻松,然后设置按钮' s { {1}}到适当的值。

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

要访问QAction::setMenu媒体资源,您可以使用popupMode并将其投放到QToolBar::widgetForAction