QWeakPointer Class
template <typename T> class QWeakPointerLa 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) |
No miembros relacionados
| 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.