Доброго времени суток!
Подскажите, как отловить действие пользователя, обратное разворачиванию на весь экран ("Свернуть в окно"). Мне нужно установить для окна фиксированный размер после этого действия.
Я как-то попробовал поработать с changeEvent, получилось из этого примерно следующее:
C++ (Qt)
// Изменение состояния окна
void MainWindow::changeEvent(QEvent* event)
{
qDebug()<<"changeEvent"<<event->type();
bool exp1 = event->type() == QEvent::WindowStateChange;
bool exp2 = !this->isMaximized();
if (exp1 && exp2)
{
this->resize(200, 200);
}
return QMainWindow::changeEvent(event);
}
Но не работает. Причем не работает странно. Если нажать на кнопку "Свернуть в окно", то окно не меняет размеров. А если отдернуть от края экрана (в Win7), то размер меняется.
В чем может быть дело?
Вот дебаго-вывод:
C++ (Qt)
changeEvent 105 // Разворот на весь экран
resizeEvent QSize(1920, 1018)
changeEvent 105 // Сворачивание в окно
resizeEvent QSize(200, 200)
resizeEvent QSize(500, 500)
Кто-то шлет второй сигнал для восстановления в состояние, в котором было окно до разворачивания.