Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 除了内存管理,还有什么';这是一个QoObject';你的父母是做什么的?_C++_Qt_Memory - Fatal编程技术网

C++ 除了内存管理,还有什么';这是一个QoObject';你的父母是做什么的?

C++ 除了内存管理,还有什么';这是一个QoObject';你的父母是做什么的?,c++,qt,memory,C++,Qt,Memory,我知道,当一个国家被毁灭时,它也毁灭了它所有的孩子。但是,在我最近的所有Qt代码中,我总是将任何类(比如a)的成员声明为直接成员,而不是指针成员,这使得Qt的内存管理很少(如果有的话)有用 那么,这个为人父母的属性是否用于其他用途?从文档来看,不清楚是否拥有这个小部件的所有权(我认为不是)。(如前所述,当您向布局中添加小部件时)。想到的还有其他用途: 使用moveToThread()时,将移动整个对象树,而不仅仅是推送的对象(否则,内存管理将变得不可能) QWidget使用新语义扩展父/子关系

我知道,当一个国家被毁灭时,它也毁灭了它所有的孩子。但是,在我最近的所有Qt代码中,我总是将任何类(比如a)的成员声明为直接成员,而不是指针成员,这使得Qt的内存管理很少(如果有的话)有用


那么,这个为人父母的属性是否用于其他用途?从文档来看,不清楚是否拥有这个小部件的所有权(我认为不是)。(如前所述,当您向布局中添加小部件时)。

想到的还有其他用途:

  • 使用
    moveToThread()
    时,将移动整个对象树,而不仅仅是推送的对象(否则,内存管理将变得不可能)
  • QWidget
    使用新语义扩展父/子关系,例如:
    • 子部件的坐标相对于父部件
    • 父窗口小部件将其子窗口小部件剪裁到其自己的几何图形中
    • 兄弟窗口小部件的顺序决定了它们的z顺序(堆叠)
    • 未处理的鼠标/键盘事件在层次结构中向上传播
    • 顶级小部件的父级将使该顶级小部件共享同一任务栏条目,并显示在父级小部件顶部的中心位置(典型情况:对话框)

将小部件添加到布局(包含布局的小部件)时。除了销毁原因外,设置父级的一个很好的原因是将对象移动到新线程。当你将一个对象移动到一个新线程时,它会将它的所有子线程也移动到新线程。你对Qt类的使用不是惯用的。我建议按照文档的建议使用Qt类。换句话说,阅读文档中的类描述确实很有帮助:)RTFMB