Как я устанавливаю ширину QComboBox для установки самому большому объекту?

У меня есть a QComboBox то, что я заполняюсь QString использование:

comboBox->addItem(someString);

Когда я запускаю свое приложение GUI ширина QComboBox всегда 70, даже если самый маленький объект намного больше. Как я могу динамично установить ширину a 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);
22
задан AAEM 31 August 2018 в 21:03
поделиться

2 ответа

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

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

Изменить:

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

6
ответ дан 29 November 2019 в 05:39
поделиться

В интерактивной документации Qt (4.6) говорится о QComboBox :

enum    SizeAdjustPolicy  { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLength, AdjustToMinimumContentsLengthWithIcon }

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

  1. убедиться, что SizeAdjustPolicy действительно используется

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

12
ответ дан 29 November 2019 в 05:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: