我使用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);
答案 0 :(得分:11)
Qt(4.6)在线文档有关QComboBox
:
enum SizeAdjustPolicy { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLength, AdjustToMinimumContentsLengthWithIcon }
我建议
确保实际使用SizeAdjustPolicy
将枚举设置为AdjustToContents
。当你提到.ui
文件时,我建议你在Designer中这样做。通常情况下,你的构造函数中不应该有任何关于你在Designer中所做的事情的任何幻想。
答案 1 :(得分:6)
根据docs,默认SizeAdjustPolicy
是AdjustToContentsOnFirstShow
所以您可能正在展示它然后填充它?
在显示之前先填充它,或尝试将策略设置为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)