QT對話方塊去掉幫助和關閉按鈕 攔截QT關閉視窗的CloseEvent
建了一個對話方塊,我不想把邊框去掉,只想去掉關閉按鈕,
setWindowFlags(windowFlags()&~Qt::WindowCloseButtonHint&~Qt::WindowContextHelpButtonHint);
結果那個問號的按鈕去掉了,但是關閉按鈕還在,求助啊
setWindowFlags(Qt::WindowTitleHint | Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint);
這樣就行了,哈哈!
setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint);
還是簡單點好!
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(); //接受退出訊號,程式退出
}
}