Подтвердить что ты не робот

Как установить ширину QComboBox, чтобы она соответствовала самому большому элементу?

У меня есть QComboBox, который я заполняю с помощью QString, используя:

comboBox->addItem(someString);

Когда я запускаю свое приложение GUI, ширина comboBox всегда равна 70, даже если наименьший элемент намного больше. Как я могу динамически установить ширину QComboBox, например, в самую большую QString внутри comboBox?

Edit:

После некоторого дополнительного тестирования я нашел следующее решение:

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

Ответ 1

Qt (4.6) онлайн-документация имеет это сказать о QComboBox:

enum    SizeAdjustPolicy  { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLength, AdjustToMinimumContentsLengthWithIcon }

Я бы предложил

  • обеспечение использования SizeAdjustPolicy

  • настройка перечисления на AdjustToContents. Как вы упоминаете файл .ui, я предлагаю сделать это в Designer. Обычно в вашем конструкторе не должно быть ничего необычного в отношении того, что вы делаете в Designer.

Ответ 2

В соответствии с docs значение по умолчанию SizeAdjustPolicy равно AdjustToContentsOnFirstShow, возможно, вы показываете его и затем заполняете?

Заполните его сначала, прежде чем показывать его, или попробуйте установить политику на QComboBox::AdjustToContents.

Edit:

Кстати, я предполагаю, что у вас есть QComboBox в подходящем макете, например. QHBoxLayout, так что на самом деле используется подсказка/политика размера.