我有一个
QComboBox
,我使用以下方法填充 QString
:
comboBox->addItem(someString);
当我启动 GUI 应用程序时,
QComboBox
的宽度始终为 70,即使最小的项目要大得多。例如,如何动态地将 QComboBox
的宽度设置为 QString
内最大的 comboBox
?
Qt (4.6) 在线文档有这样的说法
QComboBox
:
enum SizeAdjustPolicy { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLength, AdjustToMinimumContentsLengthWithIcon }
我建议
确保
SizeAdjustPolicy
实际被使用将枚举设置为
AdjustToContents
。当您提到 .ui
文件时,我建议在 Designer 中执行此操作。通常,您的构造函数中不应该有任何与您在 Designer 中所做的事情相关的奇特内容。根据 docs 默认
SizeAdjustPolicy
是 AdjustToContentsOnFirstShow
所以也许您正在显示它然后填充它?
在显示之前先填充它,或者尝试将策略设置为
QComboBox::AdjustToContents
。
编辑:
顺便说一句,我假设您有合适的布局,例如
QComboBox
。 QHBoxLayout
,以便实际使用尺寸提示/策略。
这里有一个解决方案,仅更改组合框下拉菜单的大小以适合最大的文本,而不更改组合框本身的大小:
假设您有一个名为
cb
的组合框:
C++:
width = cb->minimumSizeHint().width()
cb->view().setMinimumWidth(width)
PyQT:
width = cb.minimumSizeHint().width()
cb.view().setMinimumWidth(width)