如何设置 QComboBox 宽度以适合最大的项目?

问题描述 投票:0回答:3

我有一个

QComboBox
,我使用以下方法填充
QString

comboBox->addItem(someString);

当我启动 GUI 应用程序时,

QComboBox
的宽度始终为 70,即使最小的项目要大得多。例如,如何动态地将
QComboBox
的宽度设置为
QString
内最大的
comboBox

c++ user-interface qt qcombobox
3个回答
19
投票

Qt (4.6) 在线文档有这样的说法

QComboBox
:

enum    SizeAdjustPolicy  { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLength, AdjustToMinimumContentsLengthWithIcon }

我建议

  1. 确保

    SizeAdjustPolicy
    实际被使用

  2. 将枚举设置为

    AdjustToContents
    。当您提到
    .ui
    文件时,我建议在 Designer 中执行此操作。通常,您的构造函数中不应该有任何与您在 Designer 中所做的事情相关的奇特内容。


8
投票

根据 docs 默认

SizeAdjustPolicy
AdjustToContentsOnFirstShow
所以也许您正在显示它然后填充它?

在显示之前先填充它,或者尝试将策略设置为

QComboBox::AdjustToContents

编辑:

顺便说一句,我假设您有合适的布局,例如

QComboBox
QHBoxLayout
,以便实际使用尺寸提示/策略。


8
投票

这里有一个解决方案,仅更改组合框下拉菜单的大小以适合最大的文本,而不更改组合框本身的大小:

假设您有一个名为

cb
的组合框:

C++:

width = cb->minimumSizeHint().width()
cb->view().setMinimumWidth(width)

PyQT:

width = cb.minimumSizeHint().width()
cb.view().setMinimumWidth(width)
© www.soinside.com 2019 - 2024. All rights reserved.