Как установить ширину 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);
Ответы
Ответ 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
, так что на самом деле используется подсказка/политика размера.