The maximization, minimization, normal display, and activation status of the response window in QT are implemented using the event processing function QWidget::changeEvent.
The window states are as follows:
enum WindowState {
WindowNoState = 0x00000000,
WindowMinimized = 0x00000001,//最小化
WindowMaximized = 0x00000002,//最大化
WindowFullScreen = 0x00000004,//全屏幕
WindowActive = 0x00000008 //激活状态
};
Example:
head File:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QPaintEvent>
#include <QMainWindow>
#include <QWindowStateChangeEvent>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
protected:
void changeEvent(QEvent*);
};
#endif // MAINWINDOW_H
accomplish:
#include "mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
}
MainWindow::~MainWindow()
{
}
void MainWindow::changeEvent(QEvent* event)
{
if(QEvent::WindowStateChange == event->type())
{
QWindowStateChangeEvent * stateEvent = dynamic_cast<QWindowStateChangeEvent*>(event);
if(Q_NULLPTR != stateEvent){
if(Qt::WindowMinimized == stateEvent->oldState())
{
qDebug()<<"窗口旧状态是最小化";
}
}
}
QMainWindow::changeEvent(event);
}