gpt4 book ai didi

c++ - Qt 中小部件集合的内存管理

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:16 25 4
gpt4 key购买 nike

很抱歉提出这个愚蠢的问题,但我是第一次使用 Qt 和 C++,并且正在学习教程和一些示例。

提到的一件事是不需要明确删除 Qt 内容。那么,主要问题,这是否也适用于 Qt 东西的集合?比如说我想要动态数量的 MyWidget,所以我保留了一个 vector 或其中的任何一个。他们还在照顾我吗?

作为附带问题,是什么让我不必担心析构函数?

最佳答案

Qt 内存管理模型基于父子关系。 Qt 类将可选的 parent 作为其构造函数的参数。新实例向该父实例注册,以便在删除父实例时将其删除。如果您使用的是 Qt 集合(例如 QList),我相信您可以将列表设置为其条目的父级。如果您使用的是 std::vector 或其他集合类型,您将不会获得“自动”内存管理。

Qt 模型在 UI 层次结构中非常有意义,它与 UI 层次结构一对一匹配。在其他情况下,它并不总是映射得那么干净,您需要评估使用 Qt 系统对特定情况是否有意义。普通的 C++ 工具仍然有效:您可以使用 std::tr1::shared_ptr 或任何其他智能指针类来帮助您管理对象生命周期。 Qt 还包括 QPointer,一个 protected 指针,以及实现引用计算智能指针和弱引用对的 QSharedPointer/QWeakPointer 对。

关于c++ - Qt 中小部件集合的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2374073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com