Qt Widget和Dialog区别和使用,QWidget一闪而过
来源:互联网 发布:淘宝助理批量宝贝描述 编辑:程序博客网 时间:2024/05/16 13:44
在开发过程发现子窗口的析构函数没有执行,后来查找发现,在创建对象的时候没有传递this指针
例如Model *model = new Model();和Model *model = new Model(this);this指针没有传递,因此无法调用子对象的析构函数。
当子对象定义为指针,会出现因为没有被释放而无法被释放的现象,当关闭子窗体时不会调用析构函数,只有关闭父窗体时,才会调用子窗体的析构函数,可以设置this->setAttribute(Qt::WA_DeleteOnClose)来调用父类析构
回到QWidget和QDialog的问题上,当我把子对象QWidget定义为指针时,因为父对象被关闭,导致子对象的指针无法被释放,析构函数不能被执行。而把QWidget子对象定义为局部变量的时候,窗口却一闪而过,因为子对象作为布局变量,很快就是系统释放了,所以窗口一闪而过。
当子窗口继承QDialog的时候,因为QDialog起了一个事件循环exec,不会出现窗口一闪而过的现象。
因此,当子窗口继承QWidget的时候,一定要注意指针的传递,如果父对象被关闭,可以通过设置子窗口this->setAttribute(Qt::WA_DeleteOnClose)来调用父类析构函数。
0 1
- Qt Widget和Dialog区别和使用,QWidget一闪而过
- widget,MainWindow和Dialog的选择使用
- widget,MainWindow和Dialog的选择使用
- widget,MainWindow和Dialog的选择使用
- widget,MainWindow和Dialog的选择使用
- widget,MainWindow和Dialog的选择使用
- widget,MainWindow和Dialog的选择使用
- qt 中QDialog 和QMainWindow 和 Qwidget 的区别
- QT学习笔记之QWidget,QMainWindow和QDialog的区别
- Qt学习笔记2:QMainWindow和QWidget的区别
- QT学习——QWidget,QMainWindow和QDialog的区别
- QT中 widget window dialog 的区别
- QWidget,QMainWindow和QDialog区别
- 2.6 Qt提供的控件和对话框类(Built-in Widget and Dialog Classes)
- (转)2.6 Qt提供的控件和对话框类(Built-in Widget and Dialog Classes)
- 【PyQt】Qt中QMainWindow, QWidget以及QDialog的区别和选择
- Dialog、Toast、Snackbar的区别和使用
- Dialog、Toast、Snackbar的区别和使用
- decltype() demo
- add/remove operation is impossible, because the code element ...
- Windows下编译eXosip、osip,以及UAC和UAS的例子
- linux 限速工具
- 贪心算法之——阶乘之和(nyoj91)
- Qt Widget和Dialog区别和使用,QWidget一闪而过
- ipa包是否支持arm64方法
- “摇点”成O2O模式点餐任性一员,实现了线上点餐与线下用餐的一体化
- LeetCode之3Sum
- linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
- DJI SDK iOS 开发之一:前言
- Spring data mongoDB学习(1)
- C#中易混淆的知识点
- malloc() & free()函数区别