Qt对话框/窗口、模态和非模态、Qt::WA_DeleteOnClose
来源:互联网 发布:埃兹拉米勒 知乎 编辑:程序博客网 时间:2024/06/03 15:59
聊一聊Qt中,对话框/窗口、模态、非模态、独立窗口释放内存(设置窗口属性为Qt::WA_DeleteOnClose)。
用得最多的就是对话框/窗口,QMainWindow、QWidget、QDialog等等都是。
常见问题:
1、模态与非模态问题。
模态对话框分为应用程序级别的模态和窗口级别的模态。默认是应用程序级别的模态。
应用程序级别的模态:当该种模态的对话框出现时,用户必须首先对对话框进行交互,直到关闭对话框,然后才能访问程序中其他的窗口。
窗口级别的模态:该模态仅仅阻塞与对话框关联的窗口,但是依然允许用户与程序中其它窗口交互。
Qt::NonModal0The window is not modal and does not block input to other windows.Qt::WindowModal1The window is modal to a single window hierarchy and blocks input to its parent window, all grandparent windows, and all siblings of its parent and grandparent windows.Qt::ApplicationModal2The window is modal to the application and blocks input to all windows.设置窗口模态的函数原型:
voidsetWindowModality ( Qt::WindowModality windowModality )
用法如:setWindowModality(Qt::WindowModal),设置为窗口级别模态。
2.窗口的内存泄漏问题。
使用了new关键字在堆中申请了内存,但没有释放,或者说没有显示地调用delete来释放。
a>指定了QObject *parent或QWidget *parent。(安全)
交给Qt接管,Qt代为释放内存。
b>不指定parent,如果没处理好就会造成内存泄漏。(注意)
通常有分为两种不同的方式。
第一种,使用show()方法显示窗口。
QDialog *d = new QDialog;
//关闭的同时delete,释放内存
d->setAttribute(Qt::WA_DeleteOnClose);
d->resize(200,100);
d->show();
第二种,使用exec()方法,也叫事件循环机制,显示窗口。
d = new QDialog;
d->resize(200,100);
d->exec();
delete d;
d = NULL;
阅读全文
1 0
- Qt对话框/窗口、模态和非模态、Qt::WA_DeleteOnClose
- Qt 窗口属性简介之Qt::WA_DeleteOnClose
- Qt 窗口属性简介之Qt::WA_DeleteOnClose
- QT setAttribute(Qt::WA_DeleteOnClose)
- QT 模态对话框和非模态对话框
- QT 模态对话框和非模态对话框
- QT模态对话框和非模态对话框
- Qt模态对话框和非模态对话框
- QT中WA_DeleteOnClose属性
- Qt之Qt::WA_DeleteOnClose详解
- Qt: 模态和非模态对话框 (转载)
- Qt的模态对话框和非模态对话框
- Qt的模态对话框和非模态对话框
- Qt之模态对话框和非模态对话框.
- QT 主窗口和非模态对话框切换 以及消息通信
- Qt中的窗口和对话框组件
- Qt 框架_setAttribute(Qt::WA_DeleteOnClose)使用注意
- QT模态对话框及非模态对话框
- 终于等到你 10倍于4G网速的高铁WiFi
- 2.4g无线跳频(一)
- 【Unity】编辑器小教程
- 单点登录(SSO)、CAS介绍
- 基于java过滤器实现web系统的IP访问控制
- Qt对话框/窗口、模态和非模态、Qt::WA_DeleteOnClose
- Android开发培训(01)--开始
- java多线程系列(八)---CountDownLatch和CyclicBarrie
- Mybaties配置文件mapper中的标签使用问题
- 滑动解锁插件slideunlock.js不依赖jquery
- 使用POI操作excel(读取和创建)快速开发指南
- 【Unity技巧】Unity中的优化技术
- Django middleware 中间件
- Linux系统安装之CentOS 6.8 安装步骤