【发布时间】:2016-01-15 01:51:17
【问题描述】:
各位开发者您好!
我想实现一个“动作”QCombobox,其中不同的选项触发一个动作而不是选择一个选项。组合框显示类似“添加属性”的内容,当用户单击它时,他会获得不同的属性以供选择。如果用户单击其中一个,它会被添加到 -whateverdoesntmatter-。然后组合框切换回原来的状态。
问题是,第一个条目“添加属性”显示在组合框的下拉列表中,这给用户造成了一点混乱,因为它并不是真正的操作。
正常状态:
[Add Property]
下拉状态:
[Add Property]
Add Property
Length
Width
etc ...
因此,我想在组合框下拉时隐藏第一个选项以实现此行为:
[Add Property]
Length
Width
etc ...
我已经尝试对组合框进行子类化并覆盖 showPopUp() 和 hidePopUp() - 但我无法弄清楚如何获得我想要的行为。
想法?谢谢!
【问题讨论】:
-
您需要使用组合框模型。
-
首先,您真的需要
QComboBox吗?也许您使用带有下拉工具按钮的QToolBar会更好/更轻松。或者只是一个QToolButton与一个QMenu关联。 -
@SaZ 当我覆盖 showPopUp() 和 hidePopUp() 时,我试图这样做,但也许我错过了一些东西......我试图“获取”第一个 QabstractItem,然后在隐藏时再次添加它。也许我错过了一些模型功能。
-
@Kamaji 好主意,我会试试的。我以前不知道 ToolButton,但似乎 opoupMode "MenuButtonPopUp" 正在朝着我想要的方向发展。
-
@Kamaji 好的,这很好用。如果您愿意,可以将此添加为答案,我将其标记为解决方案。谢谢!
标签: c++ qt qt5 usability qcombobox