除了内存管理,QObject的父级是做什么用的?
Besides memory management, what's a QObject's parent used for?
我知道,当一个QObject
被摧毁时,它也摧毁了它的所有子项。但是,在我最近的Qt代码中,我一直将任何类(例如QMainWindow
)的成员声明为直接成员,而不是指针成员,这使得Qt的内存管理很少(如果有的话)有用。
那么,QObjects
的这种育儿属性是否用于其他事情?从文档中,尚不清楚(当您将小部件添加到布局时,它们的父级将设置为布局的父级,正如 thuga 指出的那样)。QBoxLayout::addWidget()
是否拥有小部件的所有权(我认为它没有)。
还有其他用途浮现在脑海中:
- 使用
moveToThread()
时,整个对象树被移动,而不仅仅是推送的对象(否则,内存管理变得不可能); -
QWidget
用新语义扩展父/子关系,例如:- 子项的坐标相对于父小部件;
- 父微件会将其子微件裁剪到自己的几何体;
- 同级小部件的顺序决定了它们的 z 排序(堆叠);
- 未处理的鼠标/键盘事件在层次结构中向上传播; 顶级小部件的父
- 级将使该顶级小部件共享相同的任务栏条目,并显示在父小部件的顶部居中(典型情况:对话框)。
相关文章:
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 超市管理系统的类别之间应该是什么关系?
- C和C++中的内存管理有什么区别
- 如果我的类正确地管理了一个资源,那么拥有智能的poointer有什么意义
- 终止内务管理是什么意思
- 使用 SIMD 管理累积(单个)值的清理代码循环的方法是什么
- 可用于存储和管理整数集合的最佳C++数据结构是什么
- 除了内存管理,QObject的父级是做什么用的?
- 使用多个堆进行内存管理有什么好处吗?
- 什么是 Windows 内存管理中的待机列表
- 在 Linux 上管理共享库的常用方法是什么?
- 终止Qt进程:Windows任务管理器在做什么,我没有?
- 什么容器是管理XML数据的最佳容器
- 在工厂中管理类实例的更好方法是什么
- (C++内存管理)如果我们有一个 int x = 1234,并且 int &y = x...那么堆栈上 y 的地址是什么?
- 在C++11中,用什么方法对数组进行简单的范围管理是最干净的
- c++内存管理.这段代码有什么问题?
- 管理DLL从c#,没有错误,但什么也没有发生
- 什么时候垃圾收集可以比手动内存管理更快
- 作为事件接收器使用的CCmdTarget的正确生命周期管理是什么?