【问题标题】:QCombobox - hide first item on drop-downQCombobox - 在下拉菜单中隐藏第一项
【发布时间】: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


【解决方案1】:

如果您不是绝对需要QComboBox,您可能会更好/更轻松地使用带有QMenu 关联的QToolButton,然后将按钮的popupMode 设置为适当的值。

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

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

【讨论】:

    猜你喜欢
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    相关资源
    最近更新 更多