我知道,当 QObject 被销毁时,它也会同时销毁其所有子级。但是,在最近的所有Qt代码中,我一直都在声明任何类的成员(例如 QMainWindow )为直接成员,而不是指针成员,这使得Qt的内存管理很少(如果有的话)很有用。

那么, QObjects 的此育儿属性是否还用于其他用途?从文档中,尚不清楚 QBoxLayout::addWidget() 是否拥有该小部件的所有权(我认为不是)。 (将小部件添加到布局时,their parent will be set to the parent of the layout表示为thuga)。

最佳答案

还有其他用途:

  • 当使用moveToThread()时,整个对象树被移动,而不仅仅是被压入的对象(否则,内存管理将变得不可能);
  • QWidget用新的语义扩展了父/子关系,例如:
  • child 的坐标是相对于父窗口小部件的;
  • 父部件将其子部件裁剪到其自己的几何形状;
  • 同级小部件的顺序决定了它们的z顺序(堆叠);
  • 未处理的鼠标/键盘事件在层次结构中向上传播;
  • 顶级小部件的父级将使该顶层共享相同的任务栏条目,并在父级顶部居中显示(典型情况:对话框)。
  • 关于c++ - 除了内存管理外,QObject的父级还用于什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37484696/

    10-10 07:24