QWidget :: setFixedHeight () не работает / все еще изменяемого размера

Я недавно перешел на Qt5 и столкнулся с проблемой, которую я не получаю в Qt4.

У меня есть модальное диалоговое окно, которое должно иметь фиксированную высоту, но изменяемой ширины. Для демонстрации приведена урезанная версия.

    QDialog dialog;
QHBoxLayout hLayout;
QLineEdit lineEdit;
QPushButton button("Check Current Height");

hLayout.addWidget(&lineEdit);
hLayout.addWidget(&button);
dialog.setLayout(&hLayout);

dialog.setFixedHeight(dialog.sizeHint().height());

qDebug() << dialog.height()
<< dialog.sizeHint().height()
<< dialog.minimumHeight()
<< dialog.maximumHeight();

dialog.exec();

Даже когда я использую setMinimumHeight & setMaximumHeight вместо setFixedHeight по-прежнему можно изменять.

в приведенном выше примере весь материал, подаваемый в qDebug, показан равным. Если минимальная и максимальная высота равны, диалог не должен быть изменяемого размера. Но здесь, это так.

Здесь стоит упомянуть, что без setFixedHeight диалоговое окно полностью изменяемого размера, но с setFixedHeight диалоговое окно изменяемого размера только до определенной точки.

Обновить: Я подключился button в слот, который выводит dialog«s minimumHeight, maximumHeight, sizeHint.height() и текущий height так же, как qDebug() выше. И когда я изменяю размер моего диалога, иногда его текущая высота превышает его максимальную высоту. Как это возможно?!

0

Решение

я нашел это ТАК сообщение где в этом наиболее популярном ответе я могу прочитать, что установка политики размера в окнах верхнего уровня не работает. Может быть, если вы использовали setLayout() метод вашего диалога и используется setFixedHeight() на вашем основном макете в вашем диалоге, тогда это будет работать.

В качестве альтернативы вы можете переопределить resizeEvent() вашего диалога и отключить все изменения высоты вручную …

0

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

Других решений пока нет …

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