En esta página

Tipo omitido

Esta categoría de advertencia se escribe [missing-type] por qmllint.

No se puede deducir el tipo de alias

¿Qué ha ocurrido?

Una propiedad alias apunta a una propiedad con un tipo C++ cuyo homólogo QML no se ha encontrado. Esto puede deberse a la importación de un módulo QML que no declara sus dependencias QML de otros módulos.

Nota: Si está importando módulos QML con dependencias externas, compruebe que están realmente instalados y que sus módulos terminan en una ruta de importación.

La advertencia también puede indicar que el tipo de la propiedad a la que hace referencia el alias no tiene una contrapartida QML. Por ejemplo, puede que al tipo de propiedad referenciado le falte la macro QML_ELEMENT. Consulte Definición de tipos QML desde C++ o Visión general - Integración de QML y C++ en este caso.

¿Por qué es malo?

Las herramientas QML no son capaces de encontrar la contrapartida QML del tipo C++: el compilador no puede compilar este alias de propiedad a C++ y qmllint tampoco QML Language Server no pueden analizar este alias de propiedad.

Ejemplo

Supongamos que nuestro módulo QML tiene una clase C++ con una propiedad myProperty:

#include <QQuickItem>
#include <QtQml/qqmlregistration.h>
#include <QObject>

class MyCppObject : public QObject
{
    Q_OBJECT
    QML_ELEMENT
public:
    MyCppObject(QObject *parent = nullptr)
        : QObject(parent)
    {}

    Q_PROPERTY(QQuickItem *myProperty READ myProperty WRITE setMyProperty NOTIFY notifyMyProperty)
    QQuickItem *myProperty() { return m_myProperty; }
    void setMyProperty(QQuickItem *item) { emit notifyMyProperty(); m_myProperty = item; }

private:
    QQuickItem *m_myProperty;

signals:
    void notifyMyProperty();
};

con la siguiente CMakeLists.txt:

project(mymodule VERSION 0.1 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 6.5 REQUIRED COMPONENTS Quick)
qt_standard_project_setup(REQUIRES 6.5)

qt_add_executable(appmymodule
    main.cpp
)

qt_add_qml_module(appmymodule
    URI mymodule
    VERSION 1.0
    QML_FILES Main.qml HelloWorld.qml
    SOURCES mycppobject.cpp mycppobject.h
)

target_link_libraries(appmymodule
 PRIVATE Qt6::Quick
)

La dependencia C++ Quick fue declarada, de tal forma que esta clase puede compilar y el include QQuickItem puede ser encontrado. Además, mymodule no tiene ninguna dependencia QML de Qt Quick.

Ahora, intentemos usar myProperty en un alias en QML. El programa se ejecutará pero las herramientas QML como el compilador, por ejemplo, se quejarán del uso de myProperty:

import mymodule

MyCppObject {
    id: root

    property alias myAlias: root.myProperty // not ok: Cannot deduce type of alias [missing-type]
}

La razón del mensaje de advertencia es que en el código QML, el tipo QQuickItem de myProperty y su contraparte QML Item no son conocidos, incluso si usted tiene import QtQuick en su archivo QML. Esto se debe a que el mismo tipo puede estar expuesto varias veces con diferentes atributos en diferentes módulos: mymodule en realidad tiene que ser preciso sobre el tipo QML de myProperty.

Para solucionar esta advertencia, añada la dependencia en el CMakeLists.txt:

qt_add_qml_module(mymodule
    URI mymodule
    ...
    # declarare QML dependency to QtQuick module
    DEPENDENCIES QtQuick
    ...
)

Ahora, ¡la advertencia debería haber desaparecido!

Véase también Declarar dependencias de módulos.

No se ha encontrado el tipo para la propiedad

¿Qué ha ocurrido?

Se ha establecido un enlace en una propiedad cuyo tipo QML no se ha encontrado. Esto puede deberse a un módulo QML que no declara sus dependencias QML de otros módulos.

Nota: Si está importando módulos QML con dependencias externas, compruebe que están realmente instalados y que sus módulos terminan en una ruta de importación.

La advertencia también puede indicar que el tipo de la propiedad no tiene una contrapartida QML. Por ejemplo, al tipo de propiedad podría faltarle la macro QML_ELEMENT. Consulte Definición de tipos QML desde C++ o Visión general - Integración de QML y C++ en este caso.

¿Por qué es malo?

Las herramientas QML no son capaces de encontrar la contrapartida QML del tipo C++: el compilador no puede compilar esta vinculación de propiedad a C++ y qmllint tampoco QML Language Server no puede analizar esta propiedad.

Ejemplo

Supongamos que nuestro módulo QML tiene una clase C++ con dos propiedades, myProperty y myProperty2:

#include <QQuickItem>
#include <QtQml/qqmlregistration.h>
#include <QObject>

class MyCppObject : public QObject
{
    Q_OBJECT
    QML_ELEMENT
public:
    MyCppObject(QObject *parent = nullptr)
     : QObject(parent)
    {}

    Q_PROPERTY(QQuickItem *myProperty READ myProperty WRITE setMyProperty NOTIFY notifyMyProperty)
    QQuickItem *myProperty() { return m_myProperty; }
    void setMyProperty(QQuickItem *item) { emit notifyMyProperty(); m_myProperty = item; }

    Q_PROPERTY(QQuickItem *myProperty2 READ myProperty2 WRITE setMyProperty2 NOTIFY notifyMyProperty2)
    QQuickItem *myProperty2() { return m_myProperty2; }
    void setMyProperty2(QQuickItem *item) { emit notifyMyProperty2(); m_myProperty2 = item; }

private:
    QQuickItem *m_myProperty;
    QQuickItem *m_myProperty2;

signals:
    void notifyMyProperty();
    void notifyMyProperty2();
};

con la siguiente CMakeLists.txt:

project(mymodule VERSION 0.1 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 6.5 REQUIRED COMPONENTS Quick)
qt_standard_project_setup(REQUIRES 6.5)

qt_add_executable(appmymodule
    main.cpp
)

qt_add_qml_module(appmymodule
    URI mymodule
    VERSION 1.0
    QML_FILES Main.qml HelloWorld.qml
    SOURCES mycppobject.cpp mycppobject.h
)

target_link_libraries(appmymodule
 PRIVATE Qt6::Quick
)

La dependencia C++ Quick fue declarada, de tal manera que esta clase puede compilar y el include QQuickItem puede ser encontrado. Además, mymodule no tiene ninguna dependencia QML de Qt Quick.

Ahora, intentemos enlazar myProperty2 a myProperty en un alias en QML. El programa se ejecutará pero las herramientas QML como el compilador, por ejemplo, se quejarán del uso de myProperty:

import mymodule

MyCppObject {
    id: root

    myProperty: myProperty2 // not ok: No type found for property "myProperty". [missing-type]
}

La razón del mensaje de advertencia es que en el código QML, el tipo QQuickItem de myProperty y su contraparte QML Item no son conocidos: la dependencia QtQuick de mymodule no fue declarada en el CMakeLists.txt.

Para corregir esta advertencia, añada la dependencia en CMakeLists.txt:

qt_add_qml_module(mymodule
    URI mymodule
    ...
    # declarare QML dependency to QtQuick module
    DEPENDENCIES QtQuick
    ...
)

Ahora, la advertencia debería desaparecer.

Véase también Declarar las dependencias de los módulos.

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