【发布时间】:2014-01-06 01:04:39
【问题描述】:
我正在尝试将QComboBox 设置为具有扩展高度,但会根据内容长度进行调整。
组合是这样创建的:
self.dataentrycombo = QComboBox()
self.dataentrycombo.setIconSize(QSize(48,48))
self.dataentrycombo.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding)
self.dataentrycombo.setSizeAdjustPolicy(QComboBox.AdjustToContents)
self.dataentrycombo.setModel(self.dataentrymodel)
填充模型后,大小会调整,但高度小于组合框所在的工具栏:
如果我改变我的主窗口大小,那么它将完全展开:
我尝试过使用QComboBox.AdjustToMinimumContentsLengthWithIcon,但它看起来像这样:
我的模型项目是这样创建的:
item = QStandardItem(QIcon(form.icon), form.icontext)
item.setData(form, Qt.UserRole + 1)
self.dataentrymodel.appendRow(item)
额外信息:
- Qt:4.7
- Windows 7 和 8
【问题讨论】:
-
我尽可能地复制了您的示例,但我无法重现这种行为。对我来说,设置大小策略足以扩展高度(否则,组合在工具栏中垂直居中)。所以我认为需要一个更完整的示例(除非涉及一些特定于版本或平台的问题)。
-
@Nathan W,几个月前我遇到了同样的问题,经过努力解决后,我终于找到了解决问题的解决方案。我刚刚在未扩展的小部件上调用了
adjustSize()。在QComboBox对象上设置 model 调用adjustSize()之后。我认为这应该可以解决您的问题。如果它对您不起作用,请尝试在小部件上调用相同的方法,然后包含combobox -
如果它仍然不起作用,请将窗口调整为当前大小。
self.resize(self.size())(这是调整窗口子级的技巧) -
尝试了所有这些方法,但似乎没有任何效果。
-
@NathanW。如果不查看用于构建工具栏的所有代码,我认为不可能提供帮助。了解您使用的平台以及您使用的 Qt 版本可能也很有用。