C++ 如何设置QComboBox宽度以适合最大的项目?
我有一个C++ 如何设置QComboBox宽度以适合最大的项目?,c++,user-interface,qt,qcombobox,C++,User Interface,Qt,Qcombobox,我有一个QComboBox,我用QString填充它: comboBox->addItem(someString); 启动GUI应用程序时,QComboBox的宽度始终为70,即使最小的项要大得多。如何动态地将QComboBox的宽度设置为组合框中最大的QString 编辑: 经过进一步测试,我找到了以下解决方案: // get the minimum width that fits the largest item. int width = ui->sieveSizeComboB
QComboBox
,我用QString
填充它:
comboBox->addItem(someString);
启动GUI应用程序时,QComboBox
的宽度始终为70,即使最小的项要大得多。如何动态地将QComboBox
的宽度设置为组合框中最大的QString
编辑:
经过进一步测试,我找到了以下解决方案:
// 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);
根据默认的SizeAdjustPolicy
是AdjustToContentsOnFirstShow
,那么您可能正在显示它,然后填充它
在显示之前先填充它,或者尝试将策略设置为QComboBox::AdjustToContent
编辑:
顺便说一句,我假设您的QComboBox
有一个合适的布局,例如QHBoxLayout
,因此实际使用的是大小提示/策略。Qt(4.6)在线文档对QComboBox
:
enum SizeAdjustPolicy { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLength, AdjustToMinimumContentsLengthWithIcon }
我建议
确保实际使用了SizedJustPolicy
将枚举设置为AdjustToContent
。正如您提到的.ui
文件,我建议在Designer中这样做。通常情况下,构造函数中不应该有任何关于在Designer中执行的操作的花哨内容
我正在寻找一种解决方案,只改变组合框下拉菜单的大小,以适应最大的文本,而不改变组合框本身的大小
你的建议(@Linoliumz)确实帮助我找到了解决办法。这是:
假设您有一个名为cb的组合框:
C++:
PyQT:
width = cb.minimumSizeHint().width()
cb.view().setMinimumWidth(width)
谢谢,是的,QComboBox在QHBox布局中。我尝试修改SizedJustPolicy,但没有效果,我还尝试在调用ui->setupUi(这一步)之前填充QComboBox;但程序崩溃了。QComboBox是使用Qt Creator创建的,我不知道在显示之前是否可以填充它。您在combobox上设置了什么作为SizePolicy
?在调用ui->setupUi(此)之前尝试填充combo会导致segfault,因为QComboBox对象还没有被实例化。将AdjustPolicy设置为QComboBox::AdjustToContent。请让我知道如何在Qt 3.3.6上执行此操作?此外,如果您希望保持组合框的大小不变,但要扩展下拉宽度以适合最长的字符串,可以设置视图的最小宽度:ui->sieveSizeComboBox->view()->setMinimumWidth(宽度)代码>谢谢你的评论,这正是我需要的。
width = cb.minimumSizeHint().width()
cb.view().setMinimumWidth(width)