26

我有一个QComboBox我填写的QString使用:

comboBox->addItem(someString);

当我启动我的 GUI 应用程序时,宽度QComboBox总是 70,即使最小的项目要大得多。QComboBox例如,如何动态地将 a 的宽度设置QStringcomboBox?

编辑:

经过进一步测试,我找到了以下解决方案:

// get the minimum width that fits the largest item.
int width = ui->sieveSizeComboBox->minimumSizeHint().width();
// set the ComboBoxe to that width.
ui->sieveSizeComboBox->setMinimumWidth(width);
4

3 回答 3

15

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

enum    SizeAdjustPolicy  { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLength, AdjustToMinimumContentsLengthWithIcon }

我会建议

  1. 确保SizeAdjustPolicy实际使用

  2. 将枚举设置为AdjustToContents. 正如你提到的一个.ui文件,我建议在 Designer 中这样做。通常,您的构造函数中不应该有任何关于您在 Designer 中所做的事情的花哨的东西。

于 2010-06-30T18:18:17.847 回答
6

根据文档,默认值SizeAdjustPolicy可能AdjustToContentsOnFirstShow是您正在显示它然后填充它?

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

编辑:

顺便说一句,我假设你有QComboBox一个合适的布局,例如。QHBoxLayout,以便实际使用大小提示/策略。

于 2010-06-30T17:38:12.450 回答
6

我正在寻找一种解决方案,仅更改组合框下拉菜单的大小以适应最大的文本,而不更改组合框本身的大小。

您的建议(@Linoliumz)确实帮助我找到了解决方案。这是:假设您有一个名为 cb 的组合框:

C++:

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

PyQT:

width = cb.minimumSizeHint().width()
cb.view().setMinimumWidth(width)
于 2019-01-02T11:07:06.557 回答