Qt designer как запретить изменить размер окна

Запрет на изменение размеров формы C++ Qt Решение и ответ на вопрос 452934

minforlife

Заблокирован

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

эм… не уверен что это можно будет сделать, посмотрите на флаги окна, может там что-то будет.
а вообще если не нужно изменять размер окна, то задаёте setFixedWidth setFixedHegith



1



12 / 14 / 2

Регистрация: 03.08.2011

Сообщений: 213

26.02.2012, 16:11

3

точно не знаю но если форма designer то там что то такое есть
помойму вкладка size а там заблокировать (disabled)



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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <QApplication>
#include <QWidget>
 
int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    QWidget *wdg = new QWidget;
    wdg->setMinimumHeight(100);
    wdg->setMaximumHeight(100);
    wdg->setMinimumWidth(300);
    wdg->setMaximumWidth(300);
    wdg->show();
    return app.exec();
}

Так размер не будет меняться



0



minforlife

Заблокирован

26.02.2012, 17:32

 [ТС]

6

Всем спасибо, но про то как запретить изменение размера формы я знал (гугл помог)… но речь идет о том, чтобы сделать в контекстном меню слово «Размер» неактивным…

Цитата
Сообщение от l_a_m
Посмотреть сообщение

эм… не уверен что это можно будет сделать

Это возможно, например формы антивируса касперского написаны на qml, «Размер» неактивный…
Просто если запретил изменение размеров, то при нажатии в контектсом меню на «Размер»… становится как-то не красиво…



0



Эксперт С++

1936 / 1048 / 109

Регистрация: 29.03.2010

Сообщений: 3,167

26.02.2012, 17:42

7

ну… тогда точно смотрите в сторону флагов виджета, в другом месте вряд-ли что-то будет



0



Чистый

Автор FAQ

2732 / 1428 / 89

Регистрация: 08.09.2011

Сообщений: 3,746

Записей в блоге: 1

26.02.2012, 17:46

8

C++
1
QWidget::setWindowFlags(MSWindowsFixedSizeDialogHint);

должен помочь



2



minforlife

Заблокирован

26.02.2012, 18:51

 [ТС]

9

Цитата
Сообщение от Чистый
Посмотреть сообщение

C++
1
QWidget::setWindowFlags(MSWindowsFixedSizeDialogHint);

должен помочь

Не то… Я создал проект Qt Quick —> Приложение Qt Quick
Вот main.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <QtGui/QApplication>
#include "qmlapplicationviewer.h"
 
Q_DECL_EXPORT int main(int argc, char *argv[])
{
    QScopedPointer<QApplication> app(createApplication(argc, argv));
 
    QmlApplicationViewer viewer;
    viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
    viewer.setMainQmlFile(QLatin1String("qml/untitled/main.qml"));
    viewer.showExpanded();
 
    return app->exec();
}

Что делать?)



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 задайте свой вопрос.

Понравилась статья? Поделить с друзьями:
  • Qiwi ошибка 500
  • Tar робкий отказ от создания пустого архива что значит как исправить
  • Qgis python error
  • Tar unexpected eof in archive tar error is not recoverable exiting now
  • Qfil sahara server fail как исправить