2012-02-02 5 views
1

У меня есть диалог, содержащий QGridLayout с тремя столбцами. Одна из строк содержит QComboBox, QPushbutton и другой QPushButton в каждом столбце соответственно. Я хочу, чтобы каждый столбец был одинакового размера и масштаба.Как я могу переопределить минимальный размер QComboBox в Qt Designer?

К сожалению, QComboBox устанавливает слишком большой размер, чтобы быть достаточно большим, чтобы содержать его самый широкий элемент. Похоже, что нет SizeAdjustPolicy под названием «DoNotAdjustAndStopBeingAnnoying» или что-то подобное, поэтому я не уверен, есть ли что-нибудь, что я могу установить, чтобы заставить его перестать выполнять эту настройку.

Я знаю, что могу сделать это в коде довольно легко, но я бы предпочел сохранить эту деталь в файле .ui. Есть ли способ сделать это в Qt 4.8 без написания кода?

ответ

2

Я смог решить эту проблему, установив горизонтальный компонент sizePolicy для комбинированного блока до Ignored. Это привело к тому, что поле со списком стало меньше, чем кнопки, поэтому я изменил их, чтобы также использовать Ignored и установить горизонтальный minimumSize для всех 3 элементов управления. Теперь все они начинаются с одинакового размера, и они масштабируются с одинаковым макетом, останавливаясь при соответствующем минимуме.

1

Не переопределяйте его в файле ui. Переопределите его либо с помощью Qt Designer, либо на панели свойств, либо в коде, когда вы создаете объект с прямым доступом к ui.

EDIT: В любом случае это может быть полезно

Существует иерархия между QLayout::SizeConstraint, QWidget::minimumSizeHint, QWidget::minimumSize, и вы можете найти его в документации.

  • QWidget::minimumSize не задан по умолчанию. Когда это так, оно преобладает над QWidget::minimumSizeHint
  • QWidget::minimumSizeHint недействителен, если виджет не находится в макете (что означает, что он может быть изменен до 0 с помощью мыши), в противном случае используйте значение, определенное макетом.
  • QLayout::SizeConstraint содержит поведение макета по умолчанию для виджетов, которые он * непосредственно * управляет. Если вы разместите макет A в макете B, все виджеты, добавленные в A, будут использовать его свойство. Также, если виджет W в B определяет свой собственный макет, то эти ограничения макета будут применяться к виджету W.
+0

Похоже, вы вообще не советуете редактировать файл .ui напрямую, что хорошо и хорошо, но как это ответить на вопрос? –

+0

Вы ответили сами, поэтому я не стал добавлять информацию с энтропией. – UmNyobe

+0

Не уверен, что вы подразумеваете под энтропией, но спасибо за добавление дополнительной информации. Я попытался установить минимальный размер отдельно, и этот вид работал - он начинается с нужного размера, но он масштабируется быстрее, чем кнопки, поэтому он выглядит только при минимальном размере. Вы знаете, почему это так? –

 Смежные вопросы

  • Нет связанных вопросов^_^