Sur cette page

QQmlSA::PassManager Class

class QQmlSA::PassManager

Permet d'analyser un élément et ses enfants avec des passes d'analyse statique. Plus d'informations...

En-tête : #include <PassManager>
CMake : find_package(Qt6 REQUIRED COMPONENTS QmlCompiler)
target_link_libraries(mytarget PRIVATE Qt6::QmlCompiler)

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)

Description détaillée

Documentation des fonctions membres

void PassManager::analyze(const QQmlSA::Element &root)

Exécute le passage de l'élément sur root et tous ses enfants.

std::unordered_map<quint32, QQmlSA::Binding> PassManager::bindingsByLocation() const

Renvoie les liaisons en fonction de l'emplacement de leur source.

bool PassManager::hasImportedModule(QAnyStringView module) const

Renvoie true si le module nommé module a été importé par le QML à analyser, false sinon.

Ceci peut être utilisé pour éviter d'enregistrer une passe spécifique à un module particulier.

if (passManager->hasImportedModule("QtPositioning"))
    passManager->registerElementPass(
       std::make_unique<PositioningPass>(passManager)
    );

Voir aussi registerPropertyPass() et registerElementPass().

bool PassManager::isCategoryEnabled(QQmlSA::LoggerWarningId category) const

Renvoie true si les avertissements de category sont activés, false sinon.

void PassManager::registerElementPass(std::unique_ptr<QQmlSA::ElementPass> pass)

Enregistre une analyse statique pass à 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 une passe d'analyse statique pour les propriétés. La passe pass sera exécutée sur toutes les propriétés correspondant aux passes moduleName, typeName et propertyName.

L'omission de propertyName enregistrera cette passe pour toutes les propriétés correspondant à typeName et moduleName.

Le fait de définir allowInheritance comme true signifie que le filtrage sur le type accepte également les types dérivant de typeName.

pass est transmis en tant que std::shared_ptr pour permettre la réutilisation de la même passe 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 bon de filtrer l'ensemble des propriétés d'une passe à l'aide de moduleName, typeName et propertyName.

Renvoie true si la passe a été ajoutée avec succès, false dans le cas contraire. L'ajout d'une passe échoue si l'adresse Element spécifiée par moduleName et typeName n'existe pas.

Voir aussi 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.