QQmlSA::PassManager Class
class QQmlSA::PassManagerPermet d'analyser un élément et ses éléments enfants à l'aide de cycles d'analyse statique. En savoir plus...
| En-tête : | #include <qqmlsa.h> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS QmlCompiler) target_link_libraries(mytarget PRIVATE Qt6::QmlCompiler) |
| Statut : | Aperçu technologique |
Cette classe est en avant-première technologique et est susceptible d'être modifiée.
Fonctions publiques
| void | analyze(const QQmlSA::Element &root) |
| std::unordered_map<quint32, QQmlSA::Binding> | bindingsByLocation() const |
| bool | hasImportedModule(QAnyStringView module) const |
| bool | isCategoryEnabled(QQmlSA::LoggerWarningId category) const |
| void | registerElementPass(std::unique_ptr<QQmlSA::ElementPass> pass) |
| bool | registerPropertyPass(std::shared_ptr<QQmlSA::PropertyPass> pass, QAnyStringView moduleName, QAnyStringView typeName, QAnyStringView propertyName = QAnyStringView(), bool allowInheritance = true) |
Documentation des fonctions membres
void PassManager::analyze(const QQmlSA::Element &root)
Exécute l'élément sur root et tous ses éléments enfants.
std::unordered_map<quint32, QQmlSA::Binding> PassManager::bindingsByLocation() const
Renvoie les liaisons en fonction de leur emplacement source.
bool PassManager::hasImportedModule(QAnyStringView module) const
Renvoie « true » si le module nommé « module » a été importé par le code QML à analyser, « false » dans le cas contraire.
Cela permet d’éviter d’enregistrer un passage spécifique à un module donné.
if (passManager->hasImportedModule("QtPositioning"))
passManager->registerElementPass(
std::make_unique<PositioningPass>(passManager)
);Voir également registerPropertyPass() et registerElementPass().
bool PassManager::isCategoryEnabled(QQmlSA::LoggerWarningId category) const
Renvoie « true » si les avertissements de « category » sont activés, « false » dans le cas contraire.
void PassManager::registerElementPass(std::unique_ptr<QQmlSA::ElementPass> pass)
Enregistre un pass d'analyse statique à exécuter sur tous les éléments.
bool PassManager::registerPropertyPass(std::shared_ptr<QQmlSA::PropertyPass> pass, QAnyStringView moduleName, QAnyStringView typeName, QAnyStringView propertyName = QAnyStringView(), bool allowInheritance = true)
Enregistre un cycle d'analyse statique pour les propriétés. L'pass sera exécutée sur toutes les propriétés correspondant aux critères moduleName, typeName et propertyName.
Si l'propertyName est omis, ce passage sera enregistré pour toutes les propriétés correspondant aux expressions typeName et moduleName.
Définir allowInheritance sur true signifie que le filtrage par type accepte également les types dérivés de typeName.
pass est transmis en tant que std::shared_ptr afin de permettre la réutilisation du même passage sur plusieurs éléments :
auto titleValiadorPass = std::make_shared<TitleValidatorPass>(manager);
manager->registerPropertyPass(titleValidatorPass,
"QtQuick", "Window", "title");
manager->registerPropertyPass(titleValidatorPass,
"QtQuick.Controls", "Dialog", "title");Remarque : l’exécution de passes d’analyse sur un trop grand nombre d’éléments peut s’avérer coûteuse. C’est pourquoi il est généralement recommandé de filtrer l’ensemble des propriétés d’une passe à l’aide des paramètres moduleName, typeName et propertyName.
Renvoie true si le passage a été ajouté avec succès, false dans le cas contraire. L'ajout d'un passage échoue lorsque le Element spécifié par moduleName et typeName n'existe pas.
Voir également PropertyPass.
© 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.