首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >QT对话框去掉帮助和关闭按钮 拦截QT关闭窗口的CloseEvent

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

作者头像
bear_fish
发布2018-09-20 14:34:02
7.1K0
发布2018-09-20 14:34:02
举报

建了一个对话框,我不想把边框去掉,只想去掉关闭按钮, 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();  //接受退出信号,程序退出     } }

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年04月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • void QDialog::closeEvent (  QCloseEvent   *  e   )  [virtual protected]
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档