QWeakPointer Class
template <typename T> class QWeakPointerLa classe QWeakPointer contient une référence faible à un pointeur partagé. Plus d'informations...
| En-tête : | #include <QWeakPointer> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
Note : Toutes les fonctions de cette classe sont réentrantes.
Fonctions publiques
| 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) |
Non-membres apparentés
| 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) |
Description détaillée
Le QWeakPointer est une référence faible automatique à un pointeur en C++. Il ne peut pas être utilisé pour déréférencer le pointeur directement, mais il peut être utilisé pour vérifier si le pointeur a été supprimé ou non dans un autre contexte.
Les objets QWeakPointer ne peuvent être créés que par affectation à partir d'une adresse QSharedPointer.
Il est important de noter que QWeakPointer ne fournit pas d'opérateurs de distribution automatique pour éviter les erreurs. Même si QWeakPointer suit un pointeur, il ne doit pas être considéré comme un pointeur lui-même, car il ne garantit pas que l'objet pointé reste valide.
Par conséquent, pour accéder au pointeur suivi par QWeakPointer, vous devez d'abord le promouvoir à QSharedPointer et vérifier si l'objet résultant est nul ou non. QSharedPointer garantit que l'objet n'est pas supprimé, de sorte que si vous obtenez un objet non nul, vous pouvez utiliser le pointeur. Voir QWeakPointer::toStrongRef() pour un exemple.
Voir également QSharedPointer et QScopedPointer.
Documentation sur les fonctions membres
QWeakPointer::QWeakPointer()
Crée un QWeakPointer qui ne pointe vers rien.
QWeakPointer::QWeakPointer(const QSharedPointer<T> &other)
Crée un QWeakPointer qui contient une référence faible au pointeur référencé par other.
Si T est un type dérivé du paramètre modèle de cette classe, QWeakPointer effectuera une conversion automatique. Dans le cas contraire, vous obtiendrez une erreur de compilation.
[noexcept] QWeakPointer::QWeakPointer(const QWeakPointer<T> &other)
Crée un QWeakPointer qui contient une référence faible au pointeur référencé par other.
Si T est un type dérivé du paramètre template de cette classe, QWeakPointer effectuera un cast automatique. Dans le cas contraire, vous obtiendrez une erreur de compilation.
QWeakPointer::~QWeakPointer()
Détruit l'objet QWeakPointer. Le pointeur référencé par cet objet ne sera pas supprimé.
void QWeakPointer::clear()
Efface cet objet QWeakPointer, en supprimant la référence qu'il a pu avoir au pointeur.
bool QWeakPointer::isNull() const
Renvoie true si cet objet fait référence à nullptr.
Notez qu'en raison de la nature des références faibles, le pointeur référencé par QWeakPointer peut devenir nullptr à tout moment, de sorte que la valeur renvoyée par cette fonction peut passer de faux à vrai d'un appel à l'autre.
QSharedPointer<T> QWeakPointer::lock() const
Identique à toStrongRef().
Cette fonction est fournie pour des raisons de compatibilité API avec 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
Renvoie true si et seulement si ce pointeur intelligent précède other dans un ordre basé sur le propriétaire et défini par l'implémentation. L'ordre est tel que deux pointeurs intelligents sont considérés comme équivalents s'ils sont tous deux vides ou s'ils possèdent tous deux le même objet (même si leur type apparent et leur pointeur sont différents).
Ces fonctions ont été introduites dans Qt 6.7.
Voir aussi 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
Renvoie true si et seulement si ce pointeur intelligent et other partagent la propriété.
Ces fonctions ont été introduites dans Qt 6.7.
Voir aussi owner_before et owner_hash.
[noexcept, since 6.7] size_t QWeakPointer::owner_hash() const
Renvoie une valeur de hachage basée sur le propriétaire pour cet objet pointeur intelligent. Les pointeurs intelligents qui se comparent de manière égale (conformément à owner_equal) auront un hachage identique basé sur le propriétaire.
Ces fonctions ont été introduites dans Qt 6.7.
Voir aussi owner_equal.
[noexcept] void QWeakPointer::swap(QWeakPointer<T> &other)
Remplace cette instance de pointeur faible par other. Cette opération est très rapide et n'échoue jamais.
QSharedPointer<T> QWeakPointer::toStrongRef() const
Promeut cette référence faible en référence forte et renvoie un objet QSharedPointer contenant cette référence. Lors de la promotion vers QSharedPointer, cette fonction vérifie si l'objet a déjà été supprimé ou non. Si ce n'est pas le cas, cette fonction augmente le nombre de références à l'objet partagé, garantissant ainsi qu'il ne sera pas supprimé.
Comme cette fonction peut échouer à obtenir une référence forte valide à l'objet partagé, vous devriez toujours vérifier si la conversion a réussi, en appelant QSharedPointer::isNull() sur l'objet retourné.
Par exemple, le code suivant promeut un QWeakPointer détenu en référence forte et, en cas de succès, imprime la valeur de l'entier détenu :
QWeakPointer<int> weakref ;// ...QSharedPointer<int> strong = weakref.toStrongRef() ;if (strong) qDebug() << "The value is:" << *strong; autre qDebug() << "The value has already been deleted";
Voir aussi QSharedPointer::QSharedPointer().
QWeakPointer::operator bool() const
Renvoie true si le pointeur contenu n'est pas nullptr. Cette fonction peut être utilisée dans if-constructs, par exemple :
if (weakref) { /*...*/ }
Notez qu'en raison de la nature des références faibles, le pointeur référencé par QWeakPointer peut devenir nullptr à tout moment, de sorte que la valeur renvoyée par cette fonction peut passer de vrai à faux d'un appel à l'autre.
Voir également isNull().
bool QWeakPointer::operator!() const
Renvoie true si cet objet fait référence à nullptr. Cette fonction peut être utilisée dans if-constructs, par exemple :
if (!weakref) { /*...*/ }
Notez qu'en raison de la nature des références faibles, le pointeur auquel QWeakPointer fait référence peut devenir nullptr à tout moment, de sorte que la valeur renvoyée par cette fonction peut passer de faux à vrai d'un appel à l'autre.
Voir également isNull().
QWeakPointer<T> &QWeakPointer::operator=(const QSharedPointer<T> &other)
Fait partager à cet objet le pointeur de other. La référence actuelle du pointeur est abandonnée mais n'est pas supprimée.
Si T est un type dérivé du paramètre modèle de cette classe, QWeakPointer effectuera une conversion automatique. Sinon, vous obtiendrez une erreur du compilateur.
[noexcept] QWeakPointer<T> &QWeakPointer::operator=(const QWeakPointer<T> &other)
Fait partager à cet objet le pointeur de other. La référence actuelle du pointeur est abandonnée mais n'est pas supprimée.
Si T est un type dérivé du paramètre modèle de cette classe, QWeakPointer effectuera une conversion automatique. Sinon, vous obtiendrez une erreur du compilateur.
Non-membres apparentés
template <typename X, typename T> QWeakPointer<X> qWeakPointerCast(const QWeakPointer<T> &src)
Renvoie un pointeur faible sur le pointeur détenu par src, coulé dans le type X. Les types T et X doivent appartenir à une même hiérarchie pour que static_cast réussisse.
Notez que X doit avoir les mêmes qualificateurs cv (const et volatile) que T, ou le code ne pourra pas être compilé. Utilisez qSharedPointerConstCast pour vous débarrasser de la contrainte.
template <typename T, typename X> bool operator!=(const QSharedPointer<T> &ptr1, const QWeakPointer<X> &ptr2)
Renvoie true si ptr1 et ptr2 se réfèrent à des pointeurs distincts.
Si le paramètre de modèle de ptr2 est différent de celui de ptr1, QSharedPointer tentera d'effectuer un static_cast automatique pour s'assurer que les pointeurs comparés sont égaux. Si le paramètre de modèle de ptr2 n'est pas un type de base ou un type dérivé de celui de ptr1, vous obtiendrez une erreur du compilateur.
template <typename T, typename X> bool operator!=(const QWeakPointer<T> &ptr1, const QSharedPointer<X> &ptr2)
Renvoie true si ptr1 et ptr2 se réfèrent à des pointeurs distincts.
Si le paramètre de modèle de ptr2 est différent de celui de ptr1, QSharedPointer tentera d'effectuer un static_cast automatique pour s'assurer que les pointeurs comparés sont égaux. Si le paramètre de modèle de ptr2 n'est pas un type de base ou un type dérivé de celui de ptr1, vous obtiendrez une erreur du compilateur.
template <typename T> bool operator!=(const QWeakPointer<T> &lhs, std::nullptr_t)
Renvoie true si lhs fait référence à un pointeur valide (c'est-à-dire non nul).
Voir aussi QWeakPointer::isNull().
template <typename T> bool operator!=(std::nullptr_t, const QWeakPointer<T> &rhs)
Renvoie true si rhs fait référence à un pointeur valide (c'est-à-dire non nul).
Voir aussi QWeakPointer::isNull().
template <typename T, typename X> bool operator==(const QSharedPointer<T> &ptr1, const QWeakPointer<X> &ptr2)
Renvoie true si ptr1 et ptr2 font référence au même pointeur.
Si le paramètre de modèle de ptr2 est différent de celui de ptr1, QSharedPointer tentera d'effectuer un static_cast automatique pour s'assurer que les pointeurs comparés sont égaux. Si le paramètre de modèle de ptr2 n'est pas un type de base ou un type dérivé de celui de ptr1, vous obtiendrez une erreur du compilateur.
template <typename T, typename X> bool operator==(const QWeakPointer<T> &ptr1, const QSharedPointer<X> &ptr2)
Renvoie true si ptr1 et ptr2 font référence au même pointeur.
Si le paramètre de modèle de ptr2 est différent de celui de ptr1, QSharedPointer tentera d'effectuer un static_cast automatique pour s'assurer que les pointeurs comparés sont égaux. Si le paramètre de modèle de ptr2 n'est pas un type de base ou un type dérivé de celui de ptr1, vous obtiendrez une erreur du compilateur.
template <typename T> bool operator==(const QWeakPointer<T> &lhs, std::nullptr_t)
Renvoie true si lhs fait référence à nullptr.
Voir aussi QWeakPointer::isNull().
template <typename T> bool operator==(std::nullptr_t, const QWeakPointer<T> &rhs)
Renvoie true si rhs fait référence à nullptr.
Voir aussi 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.