Заблокирован |
|
1 |
|
Запрет на изменение размеров формы26.02.2012, 07:17. Показов 22828. Ответов 10
Сабж. Как реализовать так, чтобы не было отображения в контекстном меню в диспетчере задач, т.е. чтобы оно было неактивным? Изображения
__________________
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
26.02.2012, 07:17 |
10 |
1936 / 1048 / 109 Регистрация: 29.03.2010 Сообщений: 3,167 |
|
26.02.2012, 14:12 |
2 |
эм… не уверен что это можно будет сделать, посмотрите на флаги окна, может там что-то будет.
1 |
12 / 14 / 2 Регистрация: 03.08.2011 Сообщений: 213 |
|
26.02.2012, 16:11 |
3 |
точно не знаю но если форма designer то там что то такое есть
0 |
78 / 10 / 2 Регистрация: 11.10.2010 Сообщений: 88 |
|
26.02.2012, 16:36 |
4 |
void QWidget::setFixedSize ( int w, int h )
0 |
Dekio Фрилансер 5844 / 1225 / 499 Регистрация: 23.11.2010 Сообщений: 3,375 Записей в блоге: 1 |
||||
26.02.2012, 16:46 |
5 |
|||
Так размер не будет меняться
0 |
Заблокирован |
|
26.02.2012, 17:32 [ТС] |
6 |
Всем спасибо, но про то как запретить изменение размера формы я знал (гугл помог)… но речь идет о том, чтобы сделать в контекстном меню слово «Размер» неактивным…
эм… не уверен что это можно будет сделать Это возможно, например формы антивируса касперского написаны на qml, «Размер» неактивный…
0 |
1936 / 1048 / 109 Регистрация: 29.03.2010 Сообщений: 3,167 |
|
26.02.2012, 17:42 |
7 |
ну… тогда точно смотрите в сторону флагов виджета, в другом месте вряд-ли что-то будет
0 |
Чистый 2732 / 1428 / 89 Регистрация: 08.09.2011 Сообщений: 3,746 Записей в блоге: 1 |
||||
26.02.2012, 17:46 |
8 |
|||
должен помочь
2 |
Заблокирован |
||||||||
26.02.2012, 18:51 [ТС] |
9 |
|||||||
должен помочь Не то… Я создал проект Qt Quick —> Приложение Qt Quick
Что делать?)
0 |
0 / 0 / 1 Регистрация: 04.04.2018 Сообщений: 3 |
|
11.06.2019, 15:34 |
10 |
Можно просто в редакторе выставить Maximum size и Minimum size такие какие надо. А чтобы не окно не изменялось вообще то максимум и минимум сделать одинаковыми
0 |
Горбаг |
11.06.2019, 16:18
|
Не по теме: nazarovv676, заканчивай свою некрофилию. Теме уже 7 лет…
0 |
Есть ли способ установить 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
У меня такой класс:
class SelectDateDialog(QDialog):
startDate = date.today()
endDate = date.today()
def __init__(self, text, isInterval = False):
QDialog.__init__(self)
uic.loadUi("resources/SelectDate.ui", self)
Теперь размер диалогового окна можно изменить в Mac OS X 10.5, но этого не должно быть. В правом нижнем углу есть ручка изменения размера.
Я уже пробовал setSizeGripEnabled
функция, это ничего не изменило.
Как сделать так, чтобы размер не изменялся?
4 ответы
если вам нужен неизменяемый размер QDialog dlg, то установите
dlg.setWindowFlags(Qt::MSWindowsFixedSizeDialogHint);
ответ дан 13 мая ’11, 16:05
Я использую следующий код, чтобы исправить размер QDialog
:
layout()->setSizeConstraint( QLayout::SetFixedSize ) ;
setSizeGripEnabled( false ) ;
Первая строка устанавливает размер макета на основе предпочтительного размера виджетов, содержащихся в макете. Вторая линия удаляет фактический захват.
Чтобы отменить это, вы должны установить ограничение по умолчанию для макета и повторно включить ручку размера.
ответ дан 15 апр.
Самый простой способ сделать окно или диалоговое окно неизменяемым — установить ограничение размера его макета равным QLayout.SetFixedSize (или QLayout :: SetFixedSize в C ++). Вам нужно сделать это только для основного макета в окне — того, которое содержит все остальные виджеты и макеты.
Я вижу, что вы используете Qt Designer для создания пользовательского интерфейса для своего диалога. Откройте файл .ui и выберите окно, затем прокрутите вниз в редакторе свойств, пока не увидите раздел «Макет». Установите для свойства layoutSizeConstraint значение SetFixedSize.
При предварительном просмотре формы виджеты внутри диалогового окна должны быть расположены правильно, но вы не сможете изменить размер диалогового окна.
Создан 23 фев.
По какой-то причине мне всегда приходилось делать следующее (в Qt Designer), чтобы быть абсолютно уверенным, что размер окна нельзя изменить:
sizePolicy -> Horizontal Policy = Fixed
sizePolicy -> Vertical Policy = Fixed
minimumSize -> Width = X
minimumSize -> Height = Y
maximumSize -> Width = X
maximumSize -> Height = Y
Обратите внимание, что я выбрал X и Y, чтобы проиллюстрировать это минимальный размер == максимальный размер. Когда вы это сделаете, ручка изменения размера должен исчезают сами по себе, хотя я видел, как по крайней мере один дистрибутив Linux оставил этот дескриптор включенным. В этом конкретном случае мы просто спрятали дескриптор, поскольку он все равно не мог изменить размер окна.
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками
qt
pyqt
or задайте свой вопрос.