QWeakPointer 的弃用成员
以下 QWeakPointer 类的成员已被弃用。 它们被提供以保持旧源代码工作。我们强烈建议不要在新代码中使用它们。
公共函数
(已弃用) | QWeakPointer(const QObject *other) |
(已弃用) T * | data() const |
(已弃用) QWeakPointer<T> & | operator=(const QObject *other) |
成员函数文档
[已弃用]
QWeakPointer::QWeakPointer(const QObject *other)
此函数已弃用。我们强烈建议不要在新代码中使用它。
创建一个 QWeakPointer,它直接持有到 QObject other 的弱引用。此构造函数仅当模板类型 T
为 QObject 或从它派生时才可用(否则将导致编译错误)。
您可以使用此构造函数与任何 QObject,即使它们不是使用 QSharedPointer 创建的。
请注意,以这种方式在任意 QObjects 上创建的 QWeakPointer 通常不能提升为 QSharedPointer。
另请参阅 QSharedPointer 和 QPointer。
[已弃用]
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 的弱引用。此函数仅当模板类型 T
为 QObject 或从其派生时才可用。
另请参阅 QPointer。
© 2024 The Qt Company Ltd. 所提供的文档贡献是各自所有者的版权。这里提供的文档是根据由自由软件基金会发布的 GNU自由文档许可版本1.3 的条款许可的。Qt及其相应标志是The Qt Company Ltd.在芬兰和其他国家/地区的商标。所有其他商标均为各自所有者的财产。