QT中响应窗口的最大化、最小化、正常显示、激活状态使用事件处理函数QWidget::changeEvent来实现。
窗口状态有以下几种:
enum WindowState {
WindowNoState = 0x00000000,
WindowMinimized = 0x00000001,//最小化
WindowMaximized = 0x00000002,//最大化
WindowFullScreen = 0x00000004,//全屏幕
WindowActive = 0x00000008 //激活状态
};
实例:
头文件:
#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
实现:
#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);
}