QScopeGuard Class
template <typename F> class QScopeGuardFournit une protection de portée pour appeler une fonction à la fin d'une portée. Plus d'informations...
| En-tête : | #include <QScopeGuard> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
Fonctions publiques
| QScopeGuard(F &&f) | |
| QScopeGuard(const F &f) | |
(since 6.11) void | commit() |
| void | dismiss() |
Non-membres apparentés
| QScopeGuard<typename std::decay<F>::type> | qScopeGuard(F &&f) |
Description détaillée
QScopeGuard<F> est une classe dont le seul but est d'exécuter la fonction f dans son destructeur. Ceci est utile pour garantir l'exécution de votre code de nettoyage, que la fonction soit quittée normalement, qu'elle soit quittée prématurément par une instruction de retour ou qu'elle soit quittée par une exception.
Une garde de portée peut être désactivée à l'aide de dismiss(), auquel cas la fonction n'est pas exécutée du tout, ou exécutée avant la destruction, à l'aide de commit().
Remarque : les exceptions ne sont pas prises en charge. L'objet appelable ne doit pas être lancé lorsqu'il est exécuté, copié ou déplacé.
Voir également QScopedValueRollback.
Documentation sur les fonctions membres
[explicit noexcept] QScopeGuard::QScopeGuard(F &&f)
[explicit noexcept] QScopeGuard::QScopeGuard(const F &f)
Crée une garde de portée qui exécutera f à la fin de la portée.
Si F est un lambda, son type ne peut pas être écrit. Dans ce cas, vous devez soit vous appuyer sur la déduction des arguments des modèles de classe (fonctionnalité du C++17) et laisser le paramètre de modèle complètement de côté, soit utiliser la fonction d'aide qScopeGuard() à la place de ce constructeur.
[noexcept(...), since 6.11] void QScopeGuard::commit()
Appelle la fonction F et désarme la protection de l'oscilloscope. Le gardien doit être armé (il n'a pas été dismiss()ed) lors de l'appel de cette fonction.
Cette fonction a été introduite dans Qt 6.11.
Remarque : cette fonction est noexcept lorsque std::is_nothrow_invocable_v<F> est true.
Voir aussi dismiss().
[noexcept] void QScopeGuard::dismiss()
Désarme la garde du champ d'application, de sorte que la fonction F ne sera pas appelée à la fin du champ d'application.
Voir également commit().
Non-membres apparentés
template <typename F> QScopeGuard<typename std::decay<F>::type> qScopeGuard(F &&f)
La fonction qScopeGuard peut être utilisée pour appeler une fonction à la fin du champ d'application.
Créez un garde de portée qui exécutera f à la fin de la portée.
Cette fonction d'aide est fournie pour que vous puissiez facilement construire un QScopeGuard sans avoir à nommer le paramètre de modèle pour le type de l'appelable. Si F est un lambda, vous ne pouvez pas écrire son type et il est nécessaire de s'appuyer sur cette fonction d'aide ou sur la déduction de l'argument du modèle de la classe.
Voici un exemple d'utilisation :
void myComplexCodeWithMultipleReturnPoints(int v) { // The lambda will be executed right before your function returns auto cleanup = qScopeGuard([] { /* code you want executed goes HERE; */ }); if (v == -1) return; int v2 = code_that_might_throw_exceptions(); if (v2 == -1) return; //... }
© 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.