Переключение между Qt::WindowMaximized и Qt::WindowNoState при фиксированном размере окна.
Добрый день, EVILEG. Вот, заканчивая рабочий день, решил задать вопрос, ответ на который я искал весь день и не нашел.
Мне нужно, чтобы окно приложения могло иметь всего два состояния.
1. Qt::WindowNoState без возможности изменять размер окна.
2. Qt::WindowMaximized.
Но при фиксированном размере окна или при флаге окна Qt::MSWindowsFixedSizeDialogHint кнопка "максимизировать" сверху справа недоступна. Есть ли возможность сделать ее доступной? И нажатие на нее связать со своим слотом, так как события нажатия на эту кнопку я не нашел?
Или только как выход, создать кнопку QPushButton и ее клик связать со своим слотом? Но это, по-моему, ужасно - использовать этот велосипед вместо предназначенной для этого кнопки "максимизировать".
Что можете посоветовать и подсказать по моей данной проблеме, EVILEG? :)
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.Вам це подобається? Поділіться в соціальних мережах!
- Akiv Doros
- 12 листопада 2024 р. 01:58
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:50бали,
- Рейтинг балів-4
- molni99
- 26 жовтня 2024 р. 11:37
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80бали,
- Рейтинг балів4
- molni99
- 26 жовтня 2024 р. 11:29
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:20бали,
- Рейтинг балів-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).
Не знаешь что это именно за число такое, а то я не нашел метода, возвращающее это число? :)
Согласен - это велосипед, но это гораздо меньше, чем отключить оформление окна и написать своё оформление ))
Например, как здесь .