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 对象。

posted @ 2025-12-30 16:33  薄暮知秋  阅读(5)  评论(0)    收藏  举报
/*https://www.cnblogs.com/lingr7/p/15651906.html*/ /*自动显示目录导航*/