我知道,当 QObject
被摧毁,它也摧毁了它的所有 child 。但是,在我最近的所有 Qt 代码中,我总是将任何类的成员(比如 QMainWindow
)声明为直接成员,而不是指针成员,这使得 Qt 的内存管理很少(如果有的话)有用。
那么,这是 QObjects
的父属性吗?用于别的东西? 从文档中,不清楚 (当您将小部件添加到布局时, their parent will be set to the parent of the layout ,如 thuga 所指出的)。QBoxLayout::addWidget()
拥有小部件的所有权(我认为它没有)。
最佳答案
我想到了其他用途:
- 当使用
moveToThread()
时,整个对象树都会被移动,而不仅仅是推送的对象(否则,内存管理变得不可能); QWidget
使用新语义扩展父/子关系,例如:- 子元素的坐标是相对于父元素的;
- 父部件会将其子部件裁剪到它自己的几何体中;
- 兄弟小部件的顺序决定了它们的 z 顺序(堆叠);
- 未处理的鼠标/键盘事件在层次结构中向上传播;
- 顶级小部件的父级将使该顶级小部件共享相同的任务栏条目并居中显示在父级的顶部(典型情况:对话框)。
关于c++ - 除了内存管理,QObject 的父对象还有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37484696/