QT攔截關閉視窗事件
阿新 • • 發佈:2019-02-10
QDialog類下有一個虛擬函式
void QDialog::closeEvent ( QCloseEvent * e ) [virtual protected]
通過實現closeEvent函式,就可以以對關閉視窗訊息進行攔截,比如程式還沒有完成工作時,可以彈出警告視窗,即使使用者確認退出操作
在標頭檔案中,需要加入#include <QCloseEvent>:
#ifndef TEST_H #define TEST_H #include <QDialog> #include <QCloseEvent> class ClientTest : public QDialog { Q_OBJECT public: ClientTest(); void closeEvent(QCloseEvent *event); //後邊的具體實現省略 ... }; #endif
在cpp檔案中,對closeEvent函式進行實現:
void ClientTest::closeEvent(QCloseEvent *event) { QMessageBox::StandardButton button; button = QMessageBox::question(this, tr("退出程式"), QString(tr("警告:程式有一個任務正在執行中,是否結束操作退出?")), QMessageBox::Yes | QMessageBox::No); if (button == QMessageBox::No) { event->ignore(); //忽略退出訊號,程式繼續執行 } else if (button == QMessageBox::Yes) { event->accept(); //接受退出訊號,程式退出 } }