如何将Qt编程中的哪些技巧巧妙融合以提升应用程序开发效率?
- 内容介绍
- 相关推荐
本文共计1025个文字,预计阅读时间需要5分钟。
在继承QObject和Qt的对象系统中,存在一个父对象的概念(并非指父类和子类的关系)。创建一个类(必须继承自QObject),这样这个类就可以使用setParent(xx)等函数(或者说实例化对象时,将该对象设置为父对象)。
是否继承QObject
qt的对象系统中,有一个父对象的概念(不是指父类子类),创建一个类(必须继承自QObject),这个类就可以用setParent(xx)等函数(或者说实例化该对象的时候把QObject(parent)这样也是同样的道理),也就是给这个对象设置要给父对象了。
指定父对象的用途:父对象析构delete删除时,会把所有的子对象一起删除了,这样子对象的删除操作不用我们手动去delete了。如果没有指定该对象的父对象,那么我们得自己在创建这个对象的地方,注意看它哪里不需要了,自己手动delete它,但是这个往往很难把握,因此会造成内存泄漏。
比如mainwindow类中包含了很多成员对象(都是通过new方式搞出来的),但是他们都设置了mainwindow作为他们的父对象,那么mainwindow的析构函数中,就不需要delete这些对象了,因为mainwindow被释放的时候,会自动delete掉这些子对象,这就是最大的好处。否则需要我们再mainwindow的析构函数中逐个delete它们。
是否子类化(继承该类做一个新类)一个类
1. 我们是否要实现多态,如果是,那就要子类化
2. 如果我们必须要重写这个类的虚函数,那么也一定要子类化这个类
其它的用途,倒不需要了,直接创建这个类的对象拿来用即可。否则,逻辑搞复杂了,虽然结果都是能实现功能,但是没必要了,毕竟代码还是讲究好理解性。
本文共计1025个文字,预计阅读时间需要5分钟。
在继承QObject和Qt的对象系统中,存在一个父对象的概念(并非指父类和子类的关系)。创建一个类(必须继承自QObject),这样这个类就可以使用setParent(xx)等函数(或者说实例化对象时,将该对象设置为父对象)。
是否继承QObject
qt的对象系统中,有一个父对象的概念(不是指父类子类),创建一个类(必须继承自QObject),这个类就可以用setParent(xx)等函数(或者说实例化该对象的时候把QObject(parent)这样也是同样的道理),也就是给这个对象设置要给父对象了。
指定父对象的用途:父对象析构delete删除时,会把所有的子对象一起删除了,这样子对象的删除操作不用我们手动去delete了。如果没有指定该对象的父对象,那么我们得自己在创建这个对象的地方,注意看它哪里不需要了,自己手动delete它,但是这个往往很难把握,因此会造成内存泄漏。
比如mainwindow类中包含了很多成员对象(都是通过new方式搞出来的),但是他们都设置了mainwindow作为他们的父对象,那么mainwindow的析构函数中,就不需要delete这些对象了,因为mainwindow被释放的时候,会自动delete掉这些子对象,这就是最大的好处。否则需要我们再mainwindow的析构函数中逐个delete它们。
是否子类化(继承该类做一个新类)一个类
1. 我们是否要实现多态,如果是,那就要子类化
2. 如果我们必须要重写这个类的虚函数,那么也一定要子类化这个类
其它的用途,倒不需要了,直接创建这个类的对象拿来用即可。否则,逻辑搞复杂了,虽然结果都是能实现功能,但是没必要了,毕竟代码还是讲究好理解性。

