Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: spectre71 от Июнь 04, 2009, 09:19



Название: QWindowStateChangeEvent - не могу отловить максимизацию окна
Отправлено: spectre71 от Июнь 04, 2009, 09:19
Помогите!
Задача определить момент максимизации окна. И запомнить его размеры и положение в нормальном режиме.
Не ловится. Может что неправильно делаю?

Код
C++ (Qt)
void MainWindow::changeEvent(QEvent * event) {
 event->ignore();
 if(event->type() != QEvent::WindowStateChange) {
   QWindowStateChangeEvent* WindowStateChangeEvent = (QWindowStateChangeEvent*)event;
   if(!(WindowStateChangeEvent->oldState() & Qt::WindowMaximized) && isMaximized()) {
     NormWidth  = width();
     NormHeight = height();
     NormX        = x();
     NormY        = y();
   }
 }      
}
 

И вообще непонятно:
Цитировать
The QWindowStateChangeEvent class provides the window state before a window state change.
Почему тогда Qt::WindowStates oldState () const
Раз ДО изменения состояния должен скорее быть "newState"


Название: Re: QWindowStateChangeEvent - не могу отловить максимизацию окна
Отправлено: spectre71 от Июнь 04, 2009, 09:31
А вот проверка на минимизацию срабатывает

Код
C++ (Qt)
if(!(WindowStateChangeEvent->oldState() & Qt::WindowMinimized) && isMinimized()) {
     if(ini.options.tray.minimize) {
       event->accept();
       hide();
     }
}
 


Название: Re: QWindowStateChangeEvent - не могу отловить максимизацию окна
Отправлено: mugabe от Июнь 04, 2009, 09:38
И вообще непонятно:
Цитировать
The QWindowStateChangeEvent class provides the window state before a window state change.
Почему тогда Qt::WindowStates oldState () const
Раз ДО изменения состояния должен скорее быть "newState"
Перевод:
Класс QWindowStateChangeEvent предоставляет состояние окна которое было до его изменения.

Так что всё верно.



Цитировать
if(event->type() != QEvent::WindowStateChange) {
может быть все таки ==, а не != ?



Название: Re: QWindowStateChangeEvent - не могу отловить максимизацию окна
Отправлено: spectre71 от Июнь 04, 2009, 10:03
Спасибо!