Переключение между Qt::WindowMaximized и Qt::WindowNoState при фиксированном размере окна.
Добрый день, EVILEG. Вот, заканчивая рабочий день, решил задать вопрос, ответ на который я искал весь день и не нашел.
Мне нужно, чтобы окно приложения могло иметь всего два состояния.
1. Qt::WindowNoState без возможности изменять размер окна.
2. Qt::WindowMaximized.
Но при фиксированном размере окна или при флаге окна Qt::MSWindowsFixedSizeDialogHint кнопка "максимизировать" сверху справа недоступна. Есть ли возможность сделать ее доступной? И нажатие на нее связать со своим слотом, так как события нажатия на эту кнопку я не нашел?
Или только как выход, создать кнопку QPushButton и ее клик связать со своим слотом? Но это, по-моему, ужасно - использовать этот велосипед вместо предназначенной для этого кнопки "максимизировать".
Что можете посоветовать и подсказать по моей данной проблеме, EVILEG? :)
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.Do you like it? Share on social networks!
- Akiv Doros
- Nov. 11, 2024, 11:58 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:50points,
- Rating points-4
- molni99
- Oct. 25, 2024, 10:37 p.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:80points,
- Rating points4
- molni99
- Oct. 25, 2024, 10:29 p.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:20points,
- Rating points-10
Добрый день! А вы пробовали вместе с флагом Qt::MSWindowsFixedSizeDialogHint поднять сразу флаг Qt::WindowMaximizeButtonHint? Там же одновременно можно поднимать флаги.
Увы, так это не работает. У Qt есть пример windowflags. Но ни одна комбинация флагов не дает нужного эффекта.
Есть какие либо другие идеи заставить приложение не изменять размеры окна, но быть способным максимизироваться ?
Сделал то, что нужно.
Похоже на баг Qt:
Если setFixedSize вызвать в конструкторе класса MainWindow, то кнопка максимизировать будет недоступна.
Но если это сделать через какое-то время, то размер так же станет фиксированным, но кнопка максимизировать будет доступна.
Случайно заметил это. Это и стало решением.
По-моему, я написал велосипед.
screen->availableSize() возвращает разрешение экрана, оставляя место для панели задач (пуск).Но по другому я не знаю как сделать :)
Если не вычитать, то qDebug() мне выдает следущее сообщение:
setGeometry: Unable to set geometry 1600x852+0+27 on QWidgetWindow/'MainWindowWindow'. Resulting geometry: 1600x825+0+27 (frame: 9, 36, 9, 9, custom margin: 0, 0, 0, 0, minimum size: 1600x852, maximum size: 1600x852).
Не знаешь что это именно за число такое, а то я не нашел метода, возвращающее это число? :)
Согласен - это велосипед, но это гораздо меньше, чем отключить оформление окна и написать своё оформление ))
Например, как здесь .