Qt中QObject中的parent参数
今天写了一个小程序,验证了带参的构造函数中参数parent的作用。
在MainWindow中声明一个QDialog类型的指针,在MainWindow中对它进行初始化。我采用了两种初始化方式,一种是带参的构造函数,一种是不带参的构造函数。如下:
/*mainwindow.h*/
...
QDialog *dialog;
... /*mainwindow.cpp*/
//第一种方式,用不带参的构造进行初始化
dialog = new QDialog;
//第二种方式,用带参的构造函数初始化
dialog = new QDialog(this);
dialog->show();
两种方式的显示情况是不同的,第一种方式在任务栏中会有该对话框的位置,也就是说虽然是mainwindow中的成员变量,但是在显示时是和mainwindow平级的。关闭mainwindow,dialog不会被关闭。第二种方式在任务栏中只有mainwindow的位置,不会出现dialog的位置。并且关闭mainwindow,dialog对话框会自动关闭。
这是parent参数导致的,在Qt中parent参数就是指定该组件的父组件,例如dialog初始化时没有指定其父组件,那么它就是一个顶层容器,所以任务栏就会给其留个位置。使用parent参数指明组件的父组件有个好处,就是当父组件被delete时,Qt可以保证所有子组件也就是将parent指针指向当前组件的所有组件都会被delete掉。Qt可以通过遍历parent属性来防止内存泄漏。
Qt中QObject中的parent参数的更多相关文章
- Qt学习之路(tip): parent参数
这是一篇很简单的文章,仅仅是用来说明一下一个参数的作用,因此我把它写成了tip,而不是接下来的17. 程序写的多了,你会发现几乎所有的Qt类的构造函数都会有一个parent参数.这个参数通常是QO ...
- 报表控件NCReport教程:集成NCReport到Qt应用程序中
NCReport是一款轻量级.快速.多平台.简单易用的基于Qt toolkit的C++编写的报表解决方案,目前主要包括报表渲染库和报表设计器GUI应用程序. 但是好多使用NCReport控件的朋友都不 ...
- Qt在表格中加入控件
任务:使用QTableWidget动态生成表格,在每行的某两列中加入QComboBox下拉框控件和QPushButton按钮控件 有添加,删除,编辑功能,每行的按钮可以浏览文件夹并选择文件 1.新建一 ...
- [OpenCV Qt教程] 在Qt图形界面中显示OpenCV图像的OpenGL Widget (第一部分)
本文译自:http://www.robot-home.it/blog/en/software/tutorial-opencv-qt-opengl-widget-per-visualizzare-imm ...
- Qt开发环境中使用报表控件FastReport遇到的一些问题(一)
FastReport是一款优秀的报表控件,由俄罗斯开发,国内有代理商.Qt环境下可实现报表功能的还有一款叫NCReport,也是收费控件,比较来比较去还是觉得前者功能强点.网上讲解此控件在Qt中使用的 ...
- Qt应用程序中设置字体
Qt应用程序中设置字体 应用程序中经常需要设置字体,例如office软件或者是其他的编辑器软件等等.这里主要涉及到如下几个概念:字体,字号以及风格(例如:粗体,斜体,下划线等等).Qt里面也有对应的类 ...
- QT国际化(中英转换)
转载:https://blog.csdn.net/u012528526/article/details/54707233 QT国际化(中英转换) 我们都知道在安卓中,想做国际化很简单,只需要建立对应的 ...
- Qt在pro中实现条件编译
https://www.cnblogs.com/Braveliu/p/5107550.html https://blog.csdn.net/simonforfuture/article/details ...
- Eclipse中自动提示的方法参数都是arg0,arg1的解决方法
Eclipse中自动提示的方法参数都是arg0,arg1,就不能根据参数名来推断参数的含义,非常不方便. 解决方法:Preferences->Java->Installed JREs,发现 ...
随机推荐
- CE_现金账户转账汇入汇出交易(案例)(未完成)
2014-07-15 BaoXinjian 一.摘要 二.案例 通过 Oracle Payments 结算事务处理 通过付款模板 事物处理子类型 已验证 -> 正在结算中 ->
- c++学习-特殊类成员
静态变量: #include<iostream> #include<string> #include <typeinfo> using namespace std; ...
- MVC项目发布错误
下面各个方法尝试采用: 重装Framework 32位的Windows: --------------------------------------------------------------- ...
- Ubuntu编写开机自启动脚本(转载)
From:http://blog.csdn.net/marujunyy/article/details/8466255 1.首先编写一个简单的shell脚本test.sh #! /bin/bash e ...
- MemcacheQ 的安装与使用
1.安装libevent 官网:http://www.libevent.org/ 全选复制放进笔记 $ wget https://github.com/downloads/libevent/libev ...
- addSubView需要注意的几个点
addSubview: Adds a view to the end of the receiver’s list of subviews. 译:增加一个视图到接收者的子视图列表中. - (void) ...
- thinkphp 访问其它控制器模板
默认的访问该方法对应得模板:$this->display() 访问其它控制器模板:$this->display(‘控制器名/方法’)
- ppm与mg/m3转换
http://wenku.baidu.com/link?url=PY0Nb09VWmBDZgLvMhaHYGJyaC6YcdYAI5XTPRkxMpDHPrs3dNxskYkKmp2F0E6Sl2H5 ...
- sql server Geometry 类型操作 笔记
sqlGeometry 类型为sql server 2008之后的版本 新加的一种CLR扩展数据类型,为广大sql server开发人员存储几何类型及空间运算提供极大的便利,下面说明geometry类 ...
- 封装一个简单好用的打印Log的工具类And快速开发系列 10个常用工具类
快速开发系列 10个常用工具类 http://blog.csdn.net/lmj623565791/article/details/38965311 ------------------------- ...