找回密码
 立即注册
首页 业界区 安全 Qt QPointer 快速入门

Qt QPointer 快速入门

阕阵闲 3 天前
简单介绍:

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


常用函数:


  • void clear()
  • T * data() const
  • bool isNull() const
简单使用:
  1.     QPointer<QWidget> ptr = new QWidget;
  2.     if (!ptr.isNull()) {
  3.         QWidget* raw = ptr.data();  // 获取原始指针
  4.         raw->show();
  5.     }
  6.     ptr.clear();  // 将 QPointer 置空(不 delete 对象)
  7.    
  8.     // 注意:这里需要手动 delete,因为 QPointer 不负责内存管理
  9.     delete ptr.data(); // 实际上此时 data() 已是 nullptr,安全但无必要
  10.     // 更常见的做法是:对象由 parent 管理,或在其他地方 delete
复制代码
使用范围


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


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册