Название: Как узнать,что пользователь развернул окно? Отправлено: Germiona от Апрель 11, 2008, 11:31 Какой сигнал или какой событие указывает,что пользователь разернул окно?
Название: Re: Как узнать,что пользователь развернул окно? Отправлено: Пантер от Апрель 11, 2008, 11:37 Ассистента под рукой нет, но, вроде бы, должен сработать resizeEvent...
Название: Re: Как узнать,что пользователь развернул окно? Отправлено: pastor от Апрель 11, 2008, 12:23 Какой сигнал или какой событие указывает,что пользователь разернул окно? Есть эвент QEvent::WindowStateChange его-то можно и перехватить: Цитировать The window's state (minimized, maximized or full-screen) has changed (QWindowStateChangeEvent). Название: Re: Как узнать,что пользователь развернул окно? Отправлено: Germiona от Апрель 11, 2008, 13:18 Нашла функцию windowState(), которая возвращает состояние окна.
Вызываю ее в resizeEvent(): Код: if ( windowState() == Qt::WindowFullScreen) cout<<"FullScreen"; Запускаю приложение,разворачиваю окно на весь экран,но вывод не происходит....Почему? Если меняю WindowFullScreen на WindowActive, то реагирует адекватно Название: Re: Как узнать,что пользователь развернул ок& Отправлено: Karl-Philipp от Апрель 11, 2008, 14:16 а как это Вы хотите: сделать и графическое приложение и консольное? ;)
Если я правильно понял, то в Вашем случае можно, например, показать сообщение QMessageBox Цитировать Если меняю WindowFullScreen на WindowActive, то реагирует адекватно Выводит в консоль ???Название: Re: Как узнать,что пользователь развернул окно? Отправлено: Germiona от Апрель 11, 2008, 14:46 Цитировать Выводит в консоль Выводит в консоль. Я запускаю приложение через mc и сообщение выводится в его консоле... Но вопрос не в этом...почему при развернутом окне (если разворачивает пользователь) значение состояние окна Qt::WindowState соотвествует только состоянию активного окна. А вот если развернуть программно: Код: setWindowState(Qt::WindowFullScreen); то после этого значение состояние меняется Название: Re: Как узнать,что пользователь развернул окно? Отправлено: pastor от Апрель 11, 2008, 14:55 Нашла функцию windowState(), которая возвращает состояние окна. Вызываю ее в resizeEvent(): Код: if ( windowState() == Qt::WindowFullScreen) cout<<"FullScreen"; Запускаю приложение,разворачиваю окно на весь экран,но вывод не происходит....Почему? Если меняю WindowFullScreen на WindowActive, то реагирует адекватно Наверное потому, что вы путаете понятия FullScreen и Maximized. Разъясните, что вы подразумеваете под словами "разворачиваю окно на весь экран"? И ещё внимательно почитайте описание каждого поля enum Qt::WindowState в ассистанте Название: Re: Как узнать,что пользователь развернул окно? Отправлено: Germiona от Апрель 11, 2008, 15:28 Цитировать Наверное потому, что вы путаете понятия FullScreen и Maximized. Разъясните, что вы подразумеваете под словами "разворачиваю окно на весь экран"? FullScreen - окно на весь экран без рамки,а Maximized - окно на весь экран с рамкой. "Развернуть на весь экран" - это значит в правом верхнем углу нажать среднюю иконку "развернуть". А что там еще можно читать....Состояние окна бывает неопределенное,минимизированное,максимизированное,на полный экран и активное....или их комбинация. Описание констант: 0,1,2,4,8 соответственно. Несмотря на то,что окно было развернуто (нажала в приложении на иконку "развернуть"), его состояние описывалось константой 8. А если программно задать,то состояние принимает значение 10: комбинация активного окна и Maximized Название: Re: Как узнать,что пользователь развернул окно? Отправлено: pastor от Апрель 11, 2008, 15:47 Незаморачивайтесь вы с resizeEvent, он не предназначен для такого. Переопределите changeEvent и в нем споймайте эвент изменения состояния окна или сделайте эвент-фильтр на этот же эвент и будет вам счастье, будите ловить все изменения состояния окна.
Название: Re: Как узнать,что пользователь развернул окно? Отправлено: ритт от Апрель 11, 2008, 17:33 Цитировать Наверное потому, что вы путаете понятия FullScreen и Maximized. Разъясните, что вы подразумеваете под словами "разворачиваю окно на весь экран"? FullScreen - окно на весь экран без рамки,а Maximized - окно на весь экран с рамкой. "Развернуть на весь экран" - это значит в правом верхнем углу нажать среднюю иконку "развернуть". надо Код: if (isMaximized()) cout<<"WindowMaximized"; Код: if ( windowState() & Qt::WindowMaximized) cout<<"WindowMaximized"; развернуть на весь экран можно только программно Код: setWindowState(windowState() ^ Qt::WindowFullScreen); читайте внимательно ассистант и ответы Пастора - вопросов будет меньше |