Qt-Qt之监听窗口改变事件(最小化、最大化、还原)
相关资料:
https://blog.csdn.net/weixin_43165135/article/details/125527497
实例代码:
.pro
1 QT += core gui 2 3 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 4 5 CONFIG += c++11 6 7 # The following define makes your compiler emit warnings if you use 8 # any Qt feature that has been marked deprecated (the exact warnings 9 # depend on your compiler). Please consult the documentation of the 10 # deprecated API in order to know how to port your code away from it. 11 DEFINES += QT_DEPRECATED_WARNINGS 12 13 # You can also make your code fail to compile if it uses deprecated APIs. 14 # In order to do so, uncomment the following line. 15 # You can also select to disable deprecated APIs only up to a certain version of Qt. 16 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 17 18 SOURCES += \ 19 main.cpp \ 20 mainwindow.cpp 21 22 HEADERS += \ 23 mainwindow.h 24 25 FORMS += \ 26 mainwindow.ui 27 28 # Default rules for deployment. 29 qnx: target.path = /tmp/$${TARGET}/bin 30 else: unix:!android: target.path = /opt/$${TARGET}/bin 31 !isEmpty(target.path): INSTALLS += target
main.cpp
1 #include "mainwindow.h" 2 3 #include <QApplication> 4 5 int main(int argc, char *argv[]) 6 { 7 QApplication a(argc, argv); 8 MainWindow w; 9 w.show(); 10 return a.exec(); 11 }
mainwindow.h
1 #ifndef MAINWINDOW_H 2 #define MAINWINDOW_H 3 4 #include <QMainWindow> 5 #include <QWindowStateChangeEvent> 6 #include <QDebug> 7 8 QT_BEGIN_NAMESPACE 9 namespace Ui { class MainWindow; } 10 QT_END_NAMESPACE 11 12 class MainWindow : public QMainWindow 13 { 14 Q_OBJECT 15 16 public: 17 MainWindow(QWidget *parent = nullptr); 18 ~MainWindow(); 19 20 virtual void changeEvent(QEvent *event); 21 22 private slots: 23 void on_pushButton_clicked(); 24 25 void on_pushButton_2_clicked(); 26 27 void on_pushButton_3_clicked(); 28 29 private: 30 Ui::MainWindow *ui; 31 }; 32 #endif // MAINWINDOW_H
mainwindow.cpp
1 #include "mainwindow.h" 2 #include "ui_mainwindow.h" 3 4 MainWindow::MainWindow(QWidget *parent) 5 : QMainWindow(parent) 6 , ui(new Ui::MainWindow) 7 { 8 ui->setupUi(this); 9 setWindowTitle(QStringLiteral("Qt之监听窗口改变事件(最小化、最大化、还原)")); 10 } 11 12 MainWindow::~MainWindow() 13 { 14 delete ui; 15 } 16 17 void MainWindow::changeEvent(QEvent *event) 18 { 19 if(QEvent::WindowStateChange == event->type()) 20 { 21 QWindowStateChangeEvent * stateEvent = dynamic_cast<QWindowStateChangeEvent*>(event); 22 if(Q_NULLPTR != stateEvent) 23 { 24 Qt::WindowStates x = stateEvent->oldState(); 25 ui->textEdit->append(QString("oldState %1").arg(x)); 26 if(Qt::WindowMinimized == stateEvent->oldState()) 27 { 28 ui->textEdit->append(QString("oldState %1").arg(x)); 29 } 30 else if(Qt::WindowMaximized == stateEvent->oldState()) 31 { 32 ui->textEdit->append(QString("oldState %1").arg(x)); 33 } 34 } 35 } 36 } 37 38 39 void MainWindow::on_pushButton_clicked() 40 { 41 this->showMinimized(); 42 } 43 44 void MainWindow::on_pushButton_2_clicked() 45 { 46 this->showMaximized(); 47 } 48 49 void MainWindow::on_pushButton_3_clicked() 50 { 51 this->showNormal(); 52 }
mainwindow.ui
1 <?xml version="1.0" encoding="UTF-8"?> 2 <ui version="4.0"> 3 <class>MainWindow</class> 4 <widget class="QMainWindow" name="MainWindow"> 5 <property name="geometry"> 6 <rect> 7 <x>0</x> 8 <y>0</y> 9 <width>561</width> 10 <height>273</height> 11 </rect> 12 </property> 13 <property name="windowTitle"> 14 <string>MainWindow</string> 15 </property> 16 <widget class="QWidget" name="centralwidget"> 17 <layout class="QVBoxLayout" name="verticalLayout"> 18 <item> 19 <widget class="QTextEdit" name="textEdit"/> 20 </item> 21 <item> 22 <layout class="QHBoxLayout" name="horizontalLayout"> 23 <item> 24 <widget class="QPushButton" name="pushButton"> 25 <property name="text"> 26 <string>最小化</string> 27 </property> 28 </widget> 29 </item> 30 <item> 31 <widget class="QPushButton" name="pushButton_2"> 32 <property name="text"> 33 <string>最大化</string> 34 </property> 35 </widget> 36 </item> 37 <item> 38 <widget class="QPushButton" name="pushButton_3"> 39 <property name="text"> 40 <string>还原</string> 41 </property> 42 </widget> 43 </item> 44 </layout> 45 </item> 46 </layout> 47 </widget> 48 </widget> 49 <resources/> 50 <connections/> 51 </ui>
作者:疯狂Delphi
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
欢迎关注我,一起进步!扫描下方二维码即可加我