Максимизация, минимизация, нормальное отображение и статус активации окна ответа в 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);
}