Qt — Сделать QMainWindow не изменяемым размером в Qt Designer

Есть ли способ установить QMainWindow не изменяемым размером в Qt Designer? Я вижу много примеров кодирования, но я хочу сделать как можно больше настроек пользовательского интерфейса в Qt Designer. До сих пор я могу получить это только установив минимальный размер и максимальный размер равными, но все же есть стрелка изменения размера в углу окна и кнопка «развернуть» в верхней части окна.

2

Решение

Когда вы выбираете QMainWindow, свойства объекта содержат поле для sizePolicy, как горизонтальное, так и вертикальное, как указано в ответе @jester, и вы можете установить их как фиксированные.

Я обнаружил, что это не всегда работает, и никогда не был уверен, почему (возможно, из-за разметки), но, как вы выяснили, если вы устанавливаете для полейimumSize и MaximumSize одинаковое значение, оно делает то, что вы хотите.

Что касается стрелки изменения размера и кнопки максимизации, мне никогда не удавалось этого сделать из Qt Creator (дизайнера), поэтому я бы сказал, что это невозможно. Тем не менее, только одна строка кода — это все, что вам нужно в конструкторе вашего класса:

setWindowFlags(Qt::Window | Qt::CustomizeWindowHint);

По умолчанию флажки окна включают Qt :: WindowMaximizeButtonHint. Устанавливая вышеупомянутые флаги, вы заявляете, что хотите настроить окно для включения указанных элементов. Это также удалит кнопку свертывания, поэтому, если вы тоже этого хотите, вы должны добавить Qt :: WindowMinimizeButtonHint.

2

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

использовать setFixedSize свойство для QMainWindow. В конструкторе, если я правильно помню, можно установить горизонтальное и вертикальное sizePolicy в Fixed,

1

Я не использую Qt Designer; Я просто пишу подкласс QMainWindow с нуля. Решение, которое я нашел для окна с неизменяемым размером, состоит в том, чтобы вызвать setFixedSize в окне QMainWindow после настройки всех ваших виджетов и макетов. Если вы все настроили правильно, вам не нужно выбирать размер вручную; Вы можете просто получить размер от sizeHint. Строка кода, которую я использовал внутри моего подкласса QMainWindow:

setFixedSize(sizeHint());

Я проверил это в Qt 5.5 на Windows 8.1, и все выглядит нормально: кнопка максимизации отключается, но остальные кнопки все еще там, и курсор не указывает на возможность изменения размера, когда пользователь перемещает его к границе.

1

К сожалению, нет возможности сделать это; в VS вы можете найти опцию в редакторе, чтобы удалить триггер мыши, который изменяет размеры окна; но по какой-то причине в QT5 его нет.

Я пытался использовать sizePolicy и установите его как фиксированный для mainWindow; но это ничего не делает для горизонтальной и вертикальной политики.

Чтобы решить проблему, я установил свое главное окно minimum а также maximum размер как те же значения; и когда вы запускаете приложение, курсор мыши не будет включен для изменения размера.

Это некрасивый способ сделать что-то настолько простое, но это единственный способ, который я нашел в конструкторе QT, без использования кода.

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