En esta página

QWeakPointer Class

template <typename T> class QWeakPointer

La clase QWeakPointer contiene una referencia débil a un puntero compartido. Más...

Cabecera: #include <QWeakPointer>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Nota: Todas las funciones de esta clase son reentrantes.

Funciones Públicas

QWeakPointer()
QWeakPointer(const QSharedPointer<T> &other)
QWeakPointer(const QWeakPointer<T> &other)
~QWeakPointer()
void clear()
bool isNull() const
QSharedPointer<T> lock() const
(since 6.7) bool owner_before(const QSharedPointer<X> &other) const
(since 6.7) bool owner_before(const QWeakPointer<X> &other) const
(since 6.7) bool owner_equal(const QSharedPointer<X> &other) const
(since 6.7) bool owner_equal(const QWeakPointer<X> &other) const
(since 6.7) size_t owner_hash() const
void swap(QWeakPointer<T> &other)
QSharedPointer<T> toStrongRef() const
operator bool() const
bool operator!() const
QWeakPointer<T> &operator=(const QSharedPointer<T> &other)
QWeakPointer<T> &operator=(const QWeakPointer<T> &other)
QWeakPointer<X> qWeakPointerCast(const QWeakPointer<T> &src)
bool operator!=(const QSharedPointer<T> &ptr1, const QWeakPointer<X> &ptr2)
bool operator!=(const QWeakPointer<T> &ptr1, const QSharedPointer<X> &ptr2)
bool operator!=(const QWeakPointer<T> &lhs, std::nullptr_t)
bool operator!=(std::nullptr_t, const QWeakPointer<T> &rhs)
bool operator==(const QSharedPointer<T> &ptr1, const QWeakPointer<X> &ptr2)
bool operator==(const QWeakPointer<T> &ptr1, const QSharedPointer<X> &ptr2)
bool operator==(const QWeakPointer<T> &lhs, std::nullptr_t)
bool operator==(std::nullptr_t, const QWeakPointer<T> &rhs)

Descripción Detallada

QWeakPointer es una referencia débil automática a un puntero en C++. No puede usarse para desreferenciar el puntero directamente, pero puede usarse para verificar si el puntero ha sido borrado o no en otro contexto.

Los objetos QWeakPointer sólo pueden crearse por asignación desde un QSharedPointer.

Es importante tener en cuenta que QWeakPointer no proporciona operadores de casting automáticos para evitar que se produzcan errores. Aunque QWeakPointer rastrea un puntero, no debe considerarse un puntero en sí mismo, ya que no garantiza que el objeto apuntado siga siendo válido.

Por lo tanto, para acceder al puntero que QWeakPointer está rastreando, primero debe promoverlo a QSharedPointer y verificar si el objeto resultante es nulo o no. QSharedPointer garantiza que el objeto no es borrado, por lo que si obtiene un objeto no nulo, puede utilizar el puntero. Véase QWeakPointer::toStrongRef() para un ejemplo.

Véase también QSharedPointer y QScopedPointer.

Documentación de funciones miembro

QWeakPointer::QWeakPointer()

Crea un QWeakPointer que no apunta a nada.

QWeakPointer::QWeakPointer(const QSharedPointer<T> &other)

Crea un QWeakPointer que contiene una referencia débil al puntero referenciado por other.

Si T es un tipo derivado del parámetro de plantilla de esta clase, QWeakPointer realizará un cast automático. En caso contrario, obtendrá un error del compilador.

[noexcept] QWeakPointer::QWeakPointer(const QWeakPointer<T> &other)

Crea un QWeakPointer que contiene una referencia débil al puntero referenciado por other.

Si T es un tipo derivado del parámetro de plantilla de esta clase, QWeakPointer realizará un cast automático. En caso contrario, obtendrá un error del compilador.

QWeakPointer::~QWeakPointer()

Destruye este objeto QWeakPointer. El puntero referenciado por este objeto no será eliminado.

void QWeakPointer::clear()

Borra este objeto QWeakPointer, eliminando la referencia que haya podido tener al puntero.

bool QWeakPointer::isNull() const

Devuelve true si este objeto hace referencia a nullptr.

Tenga en cuenta que, debido a la naturaleza de las referencias débiles, el puntero al que hace referencia QWeakPointer puede convertirse en nullptr en cualquier momento, por lo que el valor devuelto por esta función puede cambiar de falso a verdadero de una llamada a la siguiente.

QSharedPointer<T> QWeakPointer::lock() const

Igual que toStrongRef().

Esta función se proporciona por compatibilidad API con std::weak_ptr.

[noexcept, since 6.7] template <typename X> bool QWeakPointer::owner_before(const QSharedPointer<X> &other) const

[noexcept, since 6.7] template <typename X> bool QWeakPointer::owner_before(const QWeakPointer<X> &other) const

Devuelve true si y sólo si este puntero inteligente precede a other en un orden basado en el propietario definido por la implementación. El orden es tal que dos punteros inteligentes se consideran equivalentes si ambos están vacíos o si ambos poseen el mismo objeto (incluso si su tipo aparente y puntero son diferentes).

Estas funciones se introdujeron en Qt 6.7.

Véase también owner_equal.

[noexcept, since 6.7] template <typename X> bool QWeakPointer::owner_equal(const QSharedPointer<X> &other) const

[noexcept, since 6.7] template <typename X> bool QWeakPointer::owner_equal(const QWeakPointer<X> &other) const

Devuelve true si y sólo si este puntero inteligente y other comparten propiedad.

Estas funciones se introdujeron en Qt 6.7.

Véase también owner_before y owner_hash.

[noexcept, since 6.7] size_t QWeakPointer::owner_hash() const

Devuelve un valor hash basado en el propietario para este objeto puntero inteligente. Los punteros inteligentes que se comparan igual (según owner_equal) tendrán un hash basado en propietario idéntico.

Esta función se introdujo en Qt 6.7.

Véase también owner_equal.

[noexcept] void QWeakPointer::swap(QWeakPointer<T> &other)

Intercambia esta instancia de puntero débil con other. Esta operación es muy rápida y nunca falla.

QSharedPointer<T> QWeakPointer::toStrongRef() const

Promueve esta referencia débil a una fuerte y devuelve un objeto QSharedPointer que contiene esa referencia. Al promover a QSharedPointer, esta función verifica si el objeto ya ha sido borrado o no. Si no lo ha sido, esta función incrementa la cuenta de referencias al objeto compartido, asegurando así que no será borrado.

Dado que esta función puede fallar a la hora de obtener una referencia fuerte válida al objeto compartido, siempre se debe verificar si la conversión ha tenido éxito, llamando a QSharedPointer::isNull() sobre el objeto devuelto.

Por ejemplo, el siguiente código promueve un QWeakPointer que fue retenido a una referencia fuerte y, si tuvo éxito, imprime el valor del entero que fue retenido:

QWeakPointer<int> weakref;// ...QSharedPointer<int> strong = weakref.toStrongRef();if (strong)    qDebug() << "The value is:" << *strong;
si no    qDebug() << "The value has already been deleted";

Véase también QSharedPointer::QSharedPointer().

QWeakPointer::operator bool() const

Devuelve true si el puntero contenido no es nullptr. Esta función es adecuada para su uso en if-constructs, como:

if (weakref) { /*...*/ }

Tenga en cuenta que, debido a la naturaleza de las referencias débiles, el puntero al que hace referencia QWeakPointer puede convertirse en nullptr en cualquier momento, por lo que el valor devuelto por esta función puede cambiar de verdadero a falso de una llamada a la siguiente.

Véase también isNull().

bool QWeakPointer::operator!() const

Devuelve true si este objeto hace referencia a nullptr. Esta función es adecuada para su uso en if-constructs, como:

if (!weakref) { /*...*/ }

Tenga en cuenta que, debido a la naturaleza de las referencias débiles, el puntero al que hace referencia QWeakPointer puede convertirse en nullptr en cualquier momento, por lo que el valor devuelto por esta función puede cambiar de false a true de una llamada a la siguiente.

Véase también isNull().

QWeakPointer<T> &QWeakPointer::operator=(const QSharedPointer<T> &other)

Hace que este objeto comparta el puntero de other. La referencia al puntero actual se descarta pero no se elimina.

Si T es un tipo derivado del parámetro de plantilla de esta clase, QWeakPointer realizará un cast automático. En caso contrario, obtendrá un error del compilador.

[noexcept] QWeakPointer<T> &QWeakPointer::operator=(const QWeakPointer<T> &other)

Hace que este objeto comparta el puntero de other. La referencia al puntero actual se descarta pero no se elimina.

Si T es un tipo derivado del parámetro de plantilla de esta clase, QWeakPointer realizará un cast automático. En caso contrario, obtendrá un error del compilador.

No miembros relacionados

template <typename X, typename T> QWeakPointer<X> qWeakPointerCast(const QWeakPointer<T> &src)

Devuelve un puntero débil al puntero contenido en src, convertido al tipo X. Los tipos T y X deben pertenecer a una misma jerarquía para que static_cast tenga éxito.

Tenga en cuenta que X debe tener los mismos calificadores cv (const y volatile) que T, o el código no podrá compilarse. Utilice qSharedPointerConstCast para deshacerse de la constness.

template <typename T, typename X> bool operator!=(const QSharedPointer<T> &ptr1, const QWeakPointer<X> &ptr2)

Devuelve true si ptr1 y ptr2 se refieren a punteros distintos.

Si el parámetro de plantilla de ptr2'es diferente del de ptr1' QSharedPointer intentará realizar un static_cast automático para asegurarse de que los punteros comparados son iguales. Si el parámetro de plantilla de ptr2'no es una base o un tipo derivado de ptr1's, obtendrá un error de compilador.

template <typename T, typename X> bool operator!=(const QWeakPointer<T> &ptr1, const QSharedPointer<X> &ptr2)

Devuelve true si ptr1 y ptr2 se refieren a punteros distintos.

Si el parámetro de plantilla de ptr2'es diferente del de ptr1' QSharedPointer intentará realizar un static_cast automático para asegurarse de que los punteros comparados son iguales. Si el parámetro de plantilla de ptr2'no es una base o un tipo derivado de ptr1's, obtendrá un error de compilador.

template <typename T> bool operator!=(const QWeakPointer<T> &lhs, std::nullptr_t)

Devuelve true si lhs se refiere a un puntero válido (es decir, no nulo).

Véase también QWeakPointer::isNull().

template <typename T> bool operator!=(std::nullptr_t, const QWeakPointer<T> &rhs)

Devuelve true si rhs se refiere a un puntero válido (es decir, no nulo).

Véase también QWeakPointer::isNull().

template <typename T, typename X> bool operator==(const QSharedPointer<T> &ptr1, const QWeakPointer<X> &ptr2)

Devuelve true si ptr1 y ptr2 se refieren al mismo puntero.

Si el parámetro de plantilla de ptr2'es diferente del de ptr1' QSharedPointer intentará realizar una static_cast automática para asegurarse de que los punteros que se están comparando son iguales. Si el parámetro de plantilla de ptr2'no es un tipo base o derivado de ptr1's, obtendrá un error de compilador.

template <typename T, typename X> bool operator==(const QWeakPointer<T> &ptr1, const QSharedPointer<X> &ptr2)

Devuelve true si ptr1 y ptr2 se refieren al mismo puntero.

Si el parámetro de plantilla de ptr2'es diferente del de ptr1' QSharedPointer intentará realizar una static_cast automática para asegurarse de que los punteros que se están comparando son iguales. Si el parámetro de plantilla de ptr2'no es un tipo base o derivado de ptr1's, obtendrá un error de compilador.

template <typename T> bool operator==(const QWeakPointer<T> &lhs, std::nullptr_t)

Devuelve true si lhs hace referencia a nullptr.

Véase también QWeakPointer::isNull().

template <typename T> bool operator==(std::nullptr_t, const QWeakPointer<T> &rhs)

Devuelve true si rhs hace referencia a nullptr.

Véase también QWeakPointer::isNull().

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.