【Qt开发】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(); //接受退出信号,程序退出
}
}
相关文章
- Qt Creator开发的程序提升到管理员权限运行
- QTCreator使用MSVC编译开发配置问题、VS2015开发qt问题
- 【应用开发】在Linux下搭建嵌入式Qt交叉编译环境时的笔记(命令记录)
- 基于 QT(C++) 开发的斗地主游戏【100010583】
- centos7 安装qt
- Qt音视频开发30-qmedia内核qt4方案phonon播放(支持视频流)
- Qt音视频开发23-视频绘制QPainter方式(占用CPU)
- Qt音视频开发17-vlc内核回调拿图片进行绘制
- Qt音视频开发15-动态切换解码内核的设计
- Qt音视频开发03-ffmpeg倍速播放(半倍速/2倍速/4倍速/8倍速)
- Qt编写地图综合应用44-悬浮工具条
- Qt开发经验小技巧181-185
- Qt开发经验小技巧146-150
- Qt开源作品16-通用无边框拖动拉伸
- Qt开发经验小技巧41-50
- Qt编写自定义控件66-光晕时钟
- QT编写DLL给外部程序调用,提供VC/C#/C调用示例(含事件)
- QT开发之旅二TCP调试工具
- 从C++到Qt(舍弃IDE或qmake、cmake等工具的束缚,尝试通过几个例子)
- Qt之图形(组合)
- 软件设计开发笔记3:基于QT的Modbus RTU主站
- Qt ------ QElapsedTimer 计算消耗多少时间
- QWidget如何平滑过渡到Qt Quick
- 【正点原子Linux连载】第十五章 Qt控制BEEP 摘自【正点原子】I.MX6U嵌入式Qt开发指南V1.0.2
- Qt Quick 和qml介绍