QLayout заставляет родительский QWidget изменить размер, даже если я не хочу - PullRequest
3 голосов
/ 14 сентября 2011

Я использую QListWidget, который заполняется экземплярами моего собственного виджета элемента пользовательского меню. Виджет элемента меню состоит из QWidget с QHBoxLayout и нескольких QLabels.

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

У кого-нибудь есть идеи? Я пробовал вещи в моем пункте меню QWidget, как:

this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
this->resize(10, 30);

в надежде, что 10 будет проигнорировано (и расширено), а 30 останется неизменным, но размер виджета по-прежнему будет намного меньше.

Спасибо!

Marlon

Ответы [ 3 ]

1 голос
/ 16 июня 2012

Изменение размера - изменение геометрии виджета - это не то, как вы используете политику размера Fixed.Вы должны указать фиксированный размер в вашем собственном переопределении QSize sizeHint() const.Добавьте в ваш виджет следующее:

class MyWidget : public QWidget {
...
protected:
    QSize sizeHint() const { return QSize(10, 30); }
...
};

В собственной документации Qt:

QSizePolicy::Fixed QWidget::sizeHint() - единственно приемлемая альтернатива, поэтому виджет никогда не может растиили уменьшить (например, вертикальное направление кнопки).

0 голосов
/ 17 сентября 2011

Не проверено, но возможно идея: layout->setSizeConstraint( QLayout::SetNoConstraint ) возможно в сочетании с widget->setFixedHeight().Удачи!

0 голосов
/ 14 сентября 2011

То есть, вы хотите, чтобы Qlabels находился в QHBoxLayout, а не в полном виджете?Если это так, то вы можете просто добавить только QLabels в QHBoxLayout и добавить его в свой виджет элемента меню (не устанавливайте виджет элемента меню с QHBoxLayout)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...