Есть ли способ установить QMainWindow не изменяемым размером в Qt Designer? Я вижу много примеров кодирования, но я хочу сделать как можно больше настроек пользовательского интерфейса в Qt Designer. До сих пор я могу получить это только установив минимальный размер и максимальный размер равными, но все же есть стрелка изменения размера в углу окна и кнопка «развернуть» в верхней части окна.
Когда вы выбираете QMainWindow, свойства объекта содержат поле для sizePolicy, как горизонтальное, так и вертикальное, как указано в ответе @jester, и вы можете установить их как фиксированные.
Я обнаружил, что это не всегда работает, и никогда не был уверен, почему (возможно, из-за разметки), но, как вы выяснили, если вы устанавливаете для полейimumSize и MaximumSize одинаковое значение, оно делает то, что вы хотите.
Что касается стрелки изменения размера и кнопки максимизации, мне никогда не удавалось этого сделать из Qt Creator (дизайнера), поэтому я бы сказал, что это невозможно. Тем не менее, только одна строка кода — это все, что вам нужно в конструкторе вашего класса:
setWindowFlags(Qt::Window | Qt::CustomizeWindowHint);
По умолчанию флажки окна включают Qt :: WindowMaximizeButtonHint. Устанавливая вышеупомянутые флаги, вы заявляете, что хотите настроить окно для включения указанных элементов. Это также удалит кнопку свертывания, поэтому, если вы тоже этого хотите, вы должны добавить Qt :: WindowMinimizeButtonHint.
использовать setFixedSize
свойство для QMainWindow. В конструкторе, если я правильно помню, можно установить горизонтальное и вертикальное sizePolicy
в Fixed
,
Я не использую Qt Designer; Я просто пишу подкласс QMainWindow с нуля. Решение, которое я нашел для окна с неизменяемым размером, состоит в том, чтобы вызвать setFixedSize в окне QMainWindow после настройки всех ваших виджетов и макетов. Если вы все настроили правильно, вам не нужно выбирать размер вручную; Вы можете просто получить размер от sizeHint. Строка кода, которую я использовал внутри моего подкласса QMainWindow:
setFixedSize(sizeHint());
Я проверил это в Qt 5.5 на Windows 8.1, и все выглядит нормально: кнопка максимизации отключается, но остальные кнопки все еще там, и курсор не указывает на возможность изменения размера, когда пользователь перемещает его к границе.
К сожалению, нет возможности сделать это; в VS вы можете найти опцию в редакторе, чтобы удалить триггер мыши, который изменяет размеры окна; но по какой-то причине в QT5 его нет.
Я пытался использовать sizePolicy
и установите его как фиксированный для mainWindow; но это ничего не делает для горизонтальной и вертикальной политики.
Чтобы решить проблему, я установил свое главное окно minimum
а также maximum
размер как те же значения; и когда вы запускаете приложение, курсор мыши не будет включен для изменения размера.
Это некрасивый способ сделать что-то настолько простое, но это единственный способ, который я нашел в конструкторе QT, без использования кода.