Сделайте QMainWindow только горизонтально изменяемым размером - то есть ширина изменяемого размера, но высота является фиксированной - PullRequest
4 голосов
/ 29 июня 2011

Можно ли сделать QMainWindow с разметкой сетки только по горизонтали, а не по вертикали?

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

Ответы [ 3 ]

6 голосов
/ 30 июня 2011

Да, вы можете.Так как QMainWindow наследуется от QWidget, используйте настройки политики размера QWidget , чтобы разрешить изменение размера только в горизонтальном направлении.

Если вы работаете в Qt Designer, установите фиксированную политику вертикального размера, иминимальная высота, чтобы быть желаемой высотой.В коде:

QMainWindow *mainWindow = new QMainWindow();
mainWindow->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);

Будьте осторожны, используя абсолютный фиксированный размер, поскольку элементы управления могут все еще расти вертикально (например, пользователь устанавливает шрифт с высоким DPI на своем рабочем столе).

2 голосов
/ 16 марта 2012

Я видел другой способ в одном из примеров в книге под названием «Программирование на C ++ с использованием Qt 4».Они сделали это с

    setFixedHeight(sizeHint().height());
1 голос
/ 09 декабря 2014

код ниже работает нормально

setFixedHeight(sizeHint().height());

, но код ниже

QMainWindow *mainWindow = new QMainWindow();
mainWindow->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);

не работает, поскольку в функцию setSizePolicy передан неправильный параметр.Эта функция имеет две формы, одна из которых требует QSizePolicy::Policy, а другая требует QSizePolicy, но QSizePolicy::Expanding не является ни QSizePolicy, ни QSizePolicy::Policy.

...