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

Lin*_*umz 22 c++ user-interface qt qcombobox

我有一个QComboBox填写QString使用:

comboBox->addItem(someString);
Run Code Online (Sandbox Code Playgroud)

当我启动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);
Run Code Online (Sandbox Code Playgroud)

rub*_*nvb 12

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

enum    SizeAdjustPolicy  { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLength, AdjustToMinimumContentsLengthWithIcon }
Run Code Online (Sandbox Code Playgroud)

我会建议

  1. 确保SizeAdjustPolicy实际使用

  2. 将枚举设置为AdjustToContents.当你提到一个.ui文件我建议在Designer中这样做.通常情况下,构造函数中不应该有任何关于在Designer中执行的操作的任何东西.


Tro*_*our 6

根据文档,默认SizeAdjustPolicyAdjustToContentsOnFirstShow这样,也许你正在显示它,然后填充它?

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

编辑:

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


Dr *_*OUI 6

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

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

C++:

width = cb->minimumSizeHint().width()
cb->view().setMinimumWidth(width)
Run Code Online (Sandbox Code Playgroud)

PyQT :

width = cb.minimumSizeHint().width()
cb.view().setMinimumWidth(width)
Run Code Online (Sandbox Code Playgroud)