Russian Qt Forum
Сентябрь 30, 2024, 20:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: windowState в windows 7  (Прочитано 4107 раз)
QtCoder
Гость
« : Август 20, 2012, 14:30 »

В W7 можно схватить распахнутое окно за заголовок и потащить. Сменится размер и положение окна. Да только вот Qt не меняет статус окна QMainWindow. Оно остается Qt::WindowMaximized.
Это ведет к проблемам - во-первых, статус бар не меняет вид - а должен стать с полосочками.
Во-вторых, неверный статус окна не позволяет корректно восстановить размеры окна при следующем запуске программы.
Событие resizeEvent срабатывает, но если поставить руками setWindowState(Qt::WindowNoState), то окно сорвется с мышки и убежит в произвольное место. То есть событие moved не будет отработано.
Кто-нибудь сталкивался? Побеждал?

Qt 4.7.1, на другие версии перейти не могу
Записан
Bepec
Гость
« Ответ #1 : Август 20, 2012, 14:36 »

А что мешает поперехватывать сообщения окна и посмотреть, как реализовано это в других окнах?

Записан
QtCoder
Гость
« Ответ #2 : Август 20, 2012, 14:59 »

А что мешает поперехватывать сообщения окна и посмотреть, как реализовано это в других окнах?

А хрен его знает. Как это сделать?
Записан
Bepec
Гость
« Ответ #3 : Август 20, 2012, 15:03 »

Ну бери SPY++ и лови сообщения в окно. По умолчанию стоит обработка основных команд аля закрытия или перетаскивания. А вот "W7 функции" там наверняка просто не реализованы.

Ну или проще - winEvent переопределяй у своего виджета и смотри что ему приходит в момент снятия с фулэкрана.
Записан
QtCoder
Гость
« Ответ #4 : Август 20, 2012, 15:06 »

Ну бери SPY++ и лови сообщения в окно. По умолчанию стоит обработка основных команд аля закрытия или перетаскивания. А вот "W7 функции" там наверняка просто не реализованы.

Ну или проще - winEvent переопределяй у своего виджета и смотри что ему приходит в момент снятия с фулэкрана.

Как это поможет? Если Qt неправильно обрабатывает событие. Происходит resize и move одновременно. Я не могу скинуть windowState с Maximized состояния.
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #5 : Август 20, 2012, 15:31 »

Qt 4.7.1, на другие версии перейти не могу
Проверил на 4.8.2 - проблем со StatusBar не наблюдаю.
Записан
QtCoder
Гость
« Ответ #6 : Август 20, 2012, 15:33 »

Qt 4.7.1, на другие версии перейти не могу
Проверил на 4.8.2 - проблем со StatusBar не наблюдаю.
Пофиксили значит. Надо попробовать оттуда код вытащить.
Записан
Bepec
Гость
« Ответ #7 : Август 20, 2012, 15:34 »

QtCoder - я тебе по секрету скажу, Qt обрабатывает сообщения от OS в winEvent. Соответственно пиши туда что хочешь и наслаждайся происходящим, ннэ? Улыбающийся
Записан
QtCoder
Гость
« Ответ #8 : Август 21, 2012, 06:08 »

QtCoder - я тебе по секрету скажу, Qt обрабатывает сообщения от OS в winEvent. Соответственно пиши туда что хочешь и наслаждайся происходящим, ннэ? Улыбающийся
ну поймаю я это событие дальше то что? как окну сменить статус?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.076 секунд. Запросов: 22.