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,发现 ...
随机推荐
- CF 500D New Year Santa Network tree 期望 好题
New Year is coming in Tree World! In this world, as the name implies, there are n cities connected b ...
- 30天轻松学习javaweb_http头信息实例
package com.wzh.test.http; import java.io.ByteArrayOutputStream;import java.io.IOException;import ja ...
- .Net调用非托管代码数据类型不一致的问题
什么是Net互操作?.Net不能直接操作非托管代码,这时就需要互操作了. c#中调用非托管c++函数,此函数又包含指向某个结构的指针,譬如指向c#中的byte数组.对于这样的参数,考虑到非托管变量 ...
- Citrix 服务器虚拟化之二十一 桌面虚拟化之部署Provisioning Services
Citrix 服务器虚拟化之二十一 桌面虚拟化之部署Provisioning Services Provisioning Services 是Citrix 出品的一系列虚拟化产品中最核心的一个组件, ...
- sql执行返回值存储
List<Map> list = SqlRunner.queryMapList(sql); if(list != null && !list.isEmpty()){ Has ...
- Codeforces 716C[数论][构造]
/* CF傻逼构造题 某人要经过n回合游戏,初始分值是2,等级为1. 每次有两种操作 1.无条件,分值加上自己的等级数. 2.当目前的数字是完全平方数并且该数字开方以后是等级数加1的整数倍,那么可以将 ...
- 在Yarn上运行spark-shell和spark-sql命令行
转载自:http://lxw1234.com/archives/2015/08/448.htm 如果你已经有一个正常运行的Hadoop Yarn环境,那么只需要下载相应版本的Spark,解压之后做为S ...
- flexgrid的应用
第一.导入必须的CSS与JS: <link rel="stylesheet" type="text/css" href="css/flexigr ...
- XML小总结
XHTML 标签都有固定含义,不能去创造新的标签. 而 XML 支持自定义标签,具有扩 展性. 定义 XML 文档结构有两种方法:DTD 和 XSD. XSD 本身就是 XML 文档结构,是继 DTD ...
- ASP.NET MVC 之 View 测试
项目又出问题了!手贱了一下,使用某个工具整理了一下 View 中的内容,不经意之间,将 View 的输出中大小写不小心搞错了,导致输出的内容没有办法正常解析. 这种问题太隐蔽了,下次再遇到怎么办呢? ...