Как я могу избавиться от дескриптора изменения размера в QDialog? - PullRequest
3 голосов
/ 22 февраля 2009

У меня есть следующий класс:

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 ]

8 голосов
/ 06 апреля 2010

, если вы хотите не изменяемого размера QDialog dlg, затем установите

dlg.setWindowFlags(Qt::MSWindowsFixedSizeDialogHint);
5 голосов
/ 15 апреля 2009

Я использую следующий код, чтобы исправить размер QDialog:

layout()->setSizeConstraint( QLayout::SetFixedSize ) ;
setSizeGripEnabled( false ) ;

В первой строке указывается размер макета на основе предпочтительного размера виджетов, содержащихся в макете. Вторая строка удаляет фактическое сцепление.

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

4 голосов
/ 23 февраля 2009

Самый чистый способ сделать окно или диалоговое окно неизменяемым, это установить ограничение размера его макета на QLayout.SetFixedSize (или QLayout :: SetFixedSize в C ++). Это нужно сделать только для основного макета в окне, который содержит все остальные виджеты и макеты.

Я вижу, что вы используете Qt Designer для создания пользовательского интерфейса для вашего диалога. Откройте файл .ui и выберите окно, затем прокрутите вниз в редакторе свойств, пока не увидите раздел Макет. Установите для свойства layoutSizeConstraint значение SetFixedSize.

При предварительном просмотре формы виджеты внутри диалогового окна должны быть расположены правильно, но вы не сможете изменить размер диалогового окна.

1 голос
/ 15 апреля 2009

По какой-то причине мне всегда приходилось делать следующее (в 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 оставил дескриптор включенным. В этом конкретном случае мы просто скрыли дескриптор, поскольку он все равно не мог изменить размер окна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...