Переключение между Qt::WindowMaximized и Qt::WindowNoState при фиксированном размере окна.
Добрый день, EVILEG. Вот, заканчивая рабочий день, решил задать вопрос, ответ на который я искал весь день и не нашел.
Мне нужно, чтобы окно приложения могло иметь всего два состояния.
1. Qt::WindowNoState без возможности изменять размер окна.
2. Qt::WindowMaximized.
Но при фиксированном размере окна или при флаге окна Qt::MSWindowsFixedSizeDialogHint кнопка "максимизировать" сверху справа недоступна. Есть ли возможность сделать ее доступной? И нажатие на нее связать со своим слотом, так как события нажатия на эту кнопку я не нашел?
Или только как выход, создать кнопку QPushButton и ее клик связать со своим слотом? Но это, по-моему, ужасно - использовать этот велосипед вместо предназначенной для этого кнопки "максимизировать".
Что можете посоветовать и подсказать по моей данной проблеме, EVILEG? :)
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.Magst du es? In sozialen Netzwerken teilen!
Kommentare
- sdfsdfkp fgskpgokspdog
- 15. Oktober 2024 01:09
C++ - Тест 004. Указатели, Массивы и Циклы
- Ergebnis:90punkte,
- Bewertungspunkte8
- Максим Васильев
- 2. Oktober 2024 14:14
Qt - Тест 001. Сигналы и слоты
- Ergebnis:68punkte,
- Bewertungspunkte-1
- Лев Семенов
- 30. September 2024 21:04
C++ - Тест 001. Первая программа и типы данных
- Ergebnis:53punkte,
- Bewertungspunkte-4
Добрый день! А вы пробовали вместе с флагом 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).
Не знаешь что это именно за число такое, а то я не нашел метода, возвращающее это число? :)
Согласен - это велосипед, но это гораздо меньше, чем отключить оформление окна и написать своё оформление ))
Например, как здесь .