En esta página

QQmlSA::ElementPass Class

class QQmlSA::ElementPass

Clase base para todos los pases de análisis estático de elementos. Más...

Cabecera: #include <ElementPass>
CMake: find_package(Qt6 REQUIRED COMPONENTS QmlCompiler)
target_link_libraries(mytarget PRIVATE Qt6::QmlCompiler)
Hereda: QQmlSA::GenericPass

Funciones públicas

ElementPass(QQmlSA::PassManager *manager)
virtual void run(const QQmlSA::Element &element) = 0
virtual bool shouldRun(const QQmlSA::Element &element)

Descripción detallada

ElementPass es el más sencillo de los dos pases de análisis. Tiene en cuenta todos los elementos de un fichero. El método shouldRun() puede utilizarse para filtrar elementos irrelevantes, y el método run() realiza el trabajo inicial.

Las tareas comunes adecuadas para un ElementPass son

  • comprobar que las propiedades de un Elemento no están combinadas de forma absurda
  • validar los valores de las propiedades (por ejemplo, que una propiedad sólo tome ciertos valores enum)
  • comprobar el comportamiento dependiente del elemento padre (por ejemplo, no utilizar Item::width cuando el elemento padre es Layout).

Como se muestra en el siguiente fragmento, se recomienda realizar la resolución de tipos necesaria en el constructor de ElementPass y almacenarla en caché en los miembros locales, e implementar algún filtrado a través de shouldRun() para mantener el rendimiento del análisis estático.

using namespace QQmlSA;
class MyElementPass : public ElementPass
{
    Element myType;
    public:
        MyElementPass(QQmlSA::PassManager *manager)
        : myType(resolveType("MyModule", "MyType")) {}

        bool shouldRun(const Element &element) override
        {
            return element.inherits(myType);
        }
        void run(const Element &element) override
        {
            // actual pass logic
        }
}

Los ElementPass tienen una visión limitada de cómo se utilizan las propiedades de un elemento. Si necesitas esa información, considera utilizar PropertyPass en su lugar.

Nota: ElementPass sólo tendrá en cuenta los tipos instanciables. Por lo tanto, no es adecuado para analizar tipos adjuntos y singletons. Éstos deben tratarse mediante PropertyPass.

Documentación de funciones miembro

ElementPass::ElementPass(QQmlSA::PassManager *manager)

Crea un objeto ElementPass y utiliza manager para referirse al gestor de pases.

[pure virtual] void ElementPass::run(const QQmlSA::Element &element)

Se ejecuta si shouldRun() devuelve true. Realiza el cálculo real del pase en element. Este método está pensado para ser sobreescrito. No es necesario llamar al método base.

[virtual] bool ElementPass::shouldRun(const QQmlSA::Element &element)

Controla si la función run() debe ejecutarse en el element dado. Las subclases pueden anular este método para mejorar el rendimiento del análisis filtrando los elementos que no son relevantes.

La implementación por defecto devuelve incondicionalmente true.

© 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.