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

时间:2010-06-30 17:31:27

标签: c++ user-interface qt qcombobox

我使用QComboBox填充了QString

comboBox->addItem(someString);

当我启动GUI应用程序时,QComboBox的宽度始终为70,即使最小的项目要大得多。如何将QComboBox的宽度动态设置为QString中的最大comboBox

修改

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

// 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);

3 个答案:

答案 0 :(得分:11)

Qt(4.6)在线文档有关QComboBox

的说法
enum    SizeAdjustPolicy  { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLength, AdjustToMinimumContentsLengthWithIcon }

我建议

  1. 确保实际使用SizeAdjustPolicy

  2. 将枚举设置为AdjustToContents。当你提到.ui文件时,我建议你在Designer中这样做。通常情况下,你的构造函数中不应该有任何关于你在Designer中所做的事情的任何幻想。

答案 1 :(得分:6)

根据docs,默认SizeAdjustPolicyAdjustToContentsOnFirstShow所以您可能正在展示它然后填充它?

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

修改

BTW我假设您在合适的布局中拥有QComboBox,例如。 QHBoxLayout,以便实际使用大小提示/策略。

答案 2 :(得分:1)

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

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

C ++:

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

PyQT:

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