Как сделать, чтобы Qt Grid Layout автоматически выбирал ширину столбцов

у меня есть QDialog с разметкой сетки в нем. Сетка состоит из 5 столбцов с переменным количеством строк. QDialog начинается с готового пользовательского интерфейса, который имеет метку в каждом из 5 столбцов. Остальная часть сетки построена следующим образом. Для каждой строки добавлено:

  • QLineEdit добавлен к столбцу 0
  • QComboBox добавляется в столбцы 1-3, и каждый имеет переменную и различное количество элементов
  • QCheckBox добавлен в столбец 4

Когда это завершено, столбец 0 является самым широким столбцом. Столбцы 1-4 имеют одинаковую ширину. Некоторые элементы комбинированного списка (столбцы 1-3) слишком широки, чтобы их можно было увидеть и показать как «…». Столбец флажка (4) шире, чем нужно. Я пытался использовать QWidget::adjustSize() на каждом чертовом виджете, включая само диалоговое окно, и я не могу настроить его на автоматический размер, чтобы соответствовать всем. В попытке отладить его я распечатал ширину виджета для каждого столбца, но значения, которые я вижу, совсем не то, что я вижу на экране. У меня сложилось впечатление, что компоновка сетки автоматически настроит каждый виджет в каждом столбце так, чтобы он был достаточно широким, чтобы вместить самый широкий элемент, но, похоже, этого не происходит. Есть ли какая-то setAutoColumnWidth собственность или что-то?

3

Решение

Если вы хотите установить ширину для столбцов макета, вы можете установить значения Stretch для виджетов внутри макета. Например, установите горизонтальные растяжки всех виджетов на 1 для равных ширин:

lineEdit->sizePolicy().setHorizontalStretch(1);
comboBox1->sizePolicy().setHorizontalStretch(1);
comboBox2->sizePolicy().setHorizontalStretch(1);
comboBox3->sizePolicy().setHorizontalStretch(1);
checkBox->sizePolicy().setHorizontalStretch(1);

Если вы хотите, чтобы определенный столбец был шире, установите более высокое значение растяжения для виджета в этом столбце.

1

Другие решения


По вопросам рекламы [email protected]