当前位置: 代码迷 >> QT开发 >> QPointer 究竟是什么?能否简单地说一下
  详细解决方案

QPointer 究竟是什么?能否简单地说一下

热度:62   发布时间:2016-04-25 03:17:55.0
QPointer 到底是什么?能否简单地说一下.
看了一些QPointer的文章,总是感觉有点看不懂,谁能简单地说一下它是什么?
------解决方案--------------------
QPointer是一个指针封装类,其作用类似于智能指针,但是它最大的特点应该是在指针的控制上,它希望一个Qt的指针(当然是从QObject派生的)可以同时被多个类拥有,这在
界面编程中当然是很常见的事情了,但是当这个指针被删除时,我们不希望再找到那两个界面类然后通知它们,相反我们希望这两个界面类可以直接判断QPointer中的isNull方法
很自然的知道原始指针已经不存在了

试验代码:
#include <QApplication>
#include <QPushButton>
#include <QPointer>

int main(int argc, char *argv[])
{
QApplication app(argc, argv);

QPushButton* pButton = new QPushButton("wgs");
QPointer<QPushButton> button = pButton;
delete pButton;
if (!button.isNull())
{
  button->setText("www");
}
   
    return app.exec();
}

QPointer 简单地讲,我们通常删掉一个对像时,要把这个对象置为空,否则为野指针。用了QPointer它将自己置为空。