您的位置:首页 > 编程语言 > Qt开发

QT对话框去掉帮助和关闭按钮 拦截QT关闭窗口的CloseEvent

2015-04-30 10:13 519 查看
建了一个对话框,我不想把边框去掉,只想去掉关闭按钮,

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(); //接受退出信号,程序退出

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: