ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Qt QPointer 快速入门

Qt QPointer 快速入门

简单介绍:

QPointer是 Qt 提供的一个智能指针模板类,专门用于安全地持有 QObject 及其派生类的指针。它的核心特性是:当所指向的对象被销毁时,QPointer 会自动置为 nullptr(空指针),从而避免悬空指针问题。

常用函数:

  • void clear()
  • T * data() const
  • bool isNull() const

简单使用:

    QPointer<QWidget> ptr = new QWidget;if (!ptr.isNull()) {QWidget* raw = ptr.data();  // 获取原始指针raw->show();}ptr.clear();  // 将 QPointer 置空(不 delete 对象)// 注意:这里需要手动 delete,因为 QPointer 不负责内存管理delete ptr.data(); // 实际上此时 data() 已是 nullptr,安全但无必要// 更常见的做法是:对象由 parent 管理,或在其他地方 delete

使用范围

  • 用途:安全地观察一个 QObject 是否还活着。
  • 优势:避免因对象销毁导致的野指针崩溃。
  • 典型场景:缓存 widget 指针、跨异步操作持有对象、防止重复 delete。
  • 记住:只用于 QObject 子类,且不负责 delete 对象。

返回列表