2013-06-02 2 views
2

Я использую последнюю стабильную версию Qt 5, построенную статический с GCC 4.8 на Windows 8.setFixedSize не работает, как ожидалось

Я создал простой QMainWindow-приложение, с помощью всего одной кнопки. Когда я делаю setFixedSize(minimumSizeHint()), окно меняет размер так, как я хочу, и кнопка максимизации отключается, но я все еще вижу двухсторонние стрелки, когда я наводил указатель на края, и я могу изменить размер окна по вертикали на 14 пикселей , Если добавить еще одну кнопку или строку состояния - ничего не меняется. Если я добавлю 14 пикселей (или больше) к минимальной высоте - он станет действительно фиксированным, но я все еще вижу стрелки, что не является нормальным.

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

  • layout()->setSizeConstraint(QLayout::SetFixedSize) - такое же поведение
  • setWindowFlags(Qt::MSWindowsFixedSizeDialogHint) - окно просто исчезает

Любой способ исправить это?

UPD: Я ошибался в добавлении еще одной кнопки (видимо, это не то же самое, что добавить строку состояния) - изменить размер окна невозможно (хотя, почему Qt позволил мне установить высота окна меньше, чем нравится ...), но стрелки все еще там.

UPD 2: Найдено very similar question, но ответ не помог (по причинам, описанным в комментарии к самому вопросу).

+0

Ничего себе, это не происходило со мной, что порядок, в котором я называю 'setWindowFlags' и' show' может иметь значение :) Если бы я поместите его перед 'show' - работает как шарм. Если вы опубликуете это как ответ, я приму это. [Ошибка] (https://bugreports.qt-project.org/browse/QTBUG-31519) Я представил немного раньше. –

+0

Я поменял свой комментарий на ответ. – thuga

ответ

1

В Qt 5 по-разному работает размерная штука. Не знаю, является ли это ошибкой или нет. Я попытался установить флаг Qt::MSWindowsFixedSizeDialogHint для своего главного окна, и, похоже, он отлично работает для меня. Хотя я на Windows 7.

Как говорится в документации о setWindowFlags функции: Note: This function calls setParent() when changing the flags for a window, causing the widget to be hidden. You must call show() to make the widget visible again..

0

Если вы хотите, чтобы вести себя идентично тому, что было в PyQt4, вы могли бы просто программа в C++, используя ту же версию Qt, что проект PyQt использует: Qt 4.8.4

http://qt-project.org/doc/qt-4.8/qwidget.html#setFixedSize

Надеюсь, это поможет.

+0

Ну, построение Qt снова является самым последним вариантом (и я не могу просто загрузить его, потому что мне нужно, чтобы он был статическим). И все равно они должны быть одинаковыми в любом случае, проверьте документацию бок о бок: http://qt-project.org/doc/qt-5.0/qtwidgets/qwidget.html#setFixedSize –