QWeakPointer 的弃用成员

以下 QWeakPointer 类的成员已被弃用。 它们被提供以保持旧源代码工作。我们强烈建议不要在新代码中使用它们。

公共函数

(已弃用) QWeakPointer(const QObject *other)
(已弃用) T *data() const
(已弃用) QWeakPointer<T> &operator=(const QObject *other)

成员函数文档

[已弃用] QWeakPointer::QWeakPointer(const QObject *other)

此函数已弃用。我们强烈建议不要在新代码中使用它。

创建一个 QWeakPointer,它直接持有到 QObject other 的弱引用。此构造函数仅当模板类型 TQObject 或从它派生时才可用(否则将导致编译错误)。

您可以使用此构造函数与任何 QObject,即使它们不是使用 QSharedPointer 创建的。

请注意,以这种方式在任意 QObjects 上创建的 QWeakPointer 通常不能提升为 QSharedPointer

另请参阅 QSharedPointerQPointer

[已弃用] T *QWeakPointer::data() const

此函数已弃用。我们强烈建议不要在新代码中使用它。

请改用 toStrongRef() 和返回的 QSharedPointer 中的 data()。

返回此 QWeakPointer 跟踪的指针的值,不确保 它不会删除。要获得此保证,请使用 toStrongRef(),它返回一个 QSharedPointer 对象。如果此函数可以确定指针已被删除,则返回 nullptr

获取指针的值并使用该值本身(例如,用于调试语句)是可以的

    qDebug("Tracking %p", weakref.data());

但是,只有在你可以通过外部方式保证指针不会被删除的情况下,才能取消引用指针。例如,如果你可以确保没有其他线程可以删除它,或者你可能调用的函数。

在这种情况下,以下代码是有效的

    // this pointer cannot be used in another thread
    // so other threads cannot delete it
    QWeakPointer<int> weakref = obtainReference();

    Object *obj = weakref.data();
    if (obj) {
        // if the pointer wasn't deleted yet, we know it can't get
        // deleted by our own code here nor the functions we call
        otherFunction(obj);
    }

小心使用此函数。

另请参阅 isNull() 和 toStrongRef

[已弃用] QWeakPointer<T> &QWeakPointer::operator=(const QObject *other)

此函数已弃用。我们强烈建议不要在新代码中使用它。

使这个 QWeakPointer 直接保持对 QObject other 的弱引用。此函数仅当模板类型 TQObject 或从其派生时才可用。

另请参阅 QPointer

© 2024 The Qt Company Ltd. 所提供的文档贡献是各自所有者的版权。这里提供的文档是根据由自由软件基金会发布的 GNU自由文档许可版本1.3 的条款许可的。Qt及其相应标志是The Qt Company Ltd.在芬兰和其他国家/地区的商标。所有其他商标均为各自所有者的财产。