En esta página

Sintaxis

Esta categoría de advertencia se escribe [syntax] por qmllint.

No se admiten componentes anidados en línea

¿Qué ha ocurrido?

Ha definido un componente en línea dentro de otro componente en línea.

¿Por qué es malo?

El lenguaje QML no permite componentes en línea anidados. Defina siempre los componentes en línea dentro del elemento raíz del archivo QML.

Ejemplo

import QtQuick

Item {
    component Correct: Item {
        component Evil: Item { ... }
        ...
    }
}

Para corregir esta advertencia, mueva todos los componentes al elemento raíz del archivo QML.

import QtQuick

Item {
    component NotEvilAnymore: Item { ... }
    component Correct: Item {
        ...
    }
}

La declaración de componentes en línea debe ir seguida de un typename

¿Qué ha ocurrido?

Ha definido un componente en línea con un tipo base no válido.

¿Por qué es malo?

Los componentes en línea necesitan un tipo base del que heredar.

Ejemplo

import QtQuick

Item {
    property Item someProperty
    component InlineComponent: someProperty {}
}

En este caso, someProperty no es un nombre de tipo válido, ya que es un nombre de propiedad. Para corregir esta advertencia, utilice un tipo válido como tipo base del componente:

import QtQuick

Item {
    property Item someProperty
    component InlineComponent: Item { ... }
}

Expresión de alias no válida: se necesita un inicializador

¿Qué ha ocurrido?

Ha definido un alias de propiedad sin su propiedad de alias.

¿Por qué es malo?

Las propiedades alias siempre necesitan tener su propiedad alias o id en su definición.

Ejemplo

import QtQuick

Item {
    id: root
    property int someProperty
    property alias aliasProperty
}

Para corregir esta advertencia, sustituya el alias por una propiedad normal o añada la propiedad alias que falta:

import QtQuick

Item {
    id: root
    property int someProperty
    property alias withAliasedProperty: root.someProperty
}

Expresión de alias no válida: sólo los ids y las expresiones de miembros de campo pueden tener alias

¿Qué ha ocurrido?

Ha definido un alias de propiedad que tiene como alias una expresión que no es un ID o una expresión de miembro de campo.

Una expresión de miembro de campo es una expresión de la forma someId.someProperty.

¿Por qué es malo?

Las propiedades alias siempre necesitan tener su propiedad alias en su definición, y no pueden enlazarse a otras expresiones que no sean IDs y expresiones miembro de campo.

Ejemplo

import QtQuick

Item {
    property int p
    property alias someProperty: p + 1
}

Para corregir esta advertencia, sustituya el alias por una propiedad normal o vincúlelo a una expresión de Id o de miembro de campo:

import QtQuick

Item {
    id: root
    property int p
    property int someProperty: p + 1
    property alias alternative: root.p
}

Id debe ir seguido de un identificador

¿Qué ha ocurrido?

Ha definido un id sin valor.

¿Por qué es malo?

El lenguaje QML no permite ids vacíos.

Ejemplo

import QtQuick

Item {
    id:;
}

Para corregir esta advertencia, vincule el id a un nombre válido:

import QtQuick

Item {
    id: root;
}

Fallo al analizar el id

¿Qué ha ocurrido?

Has vinculado un id a una expresión que no es un nombre.

¿Por qué es malo?

El lenguaje QML sólo permite nombres como ligaduras a ids; no se pueden utilizar expresiones más complejas.

Ejemplo

import QtQuick

Item {
    property int a
    property int b
    function f() {
        if (true)
            return a
        return b
    }

    id: f()
}

Para corregir esta advertencia, vincule el id a un nombre válido o declare una propiedad y establezca un vínculo:

import QtQuick

Item {
    property int a
    property int b
    function f() {
        if (true)
            return a
        return b
    }

    id: someItem // it would be confusing to call it `f` like the function
    property int alternative: f()
}

Declaración de un objeto que no es un objeto QML como miembro de una lista

¿Qué ha ocurrido?

Ha añadido una expresión que no es un objeto a una lista de objetos.

¿Por qué es malo?

El lenguaje QML sólo permite objetos en listas de objetos.

Ejemplo

import QtQuick

Item {
    property int hello
    property list<Item> myList: [
        Item {}, hello{}
    ]
}

Para solucionar este problema, utilice un tipo de objeto válido o elimine el elemento de la lista:

import QtQuick

Item {
    component Hello: Item {}
    property list<Item> myList: [
        Item {}, Hello{}
    ]
}

Los Enums declarados dentro de componentes inline son ignorados

¿Qué ha ocurrido?

Ha definido una enum dentro de un componente en línea.

¿Por qué es malo?

El lenguaje QML sólo permite definiciones de enum dentro del elemento raíz del archivo QML. Las enumeraciones declaradas dentro de un componente en línea son inutilizables, incluso dentro del componente en línea. Lo mismo se aplica a los enums declarados dentro de objetos QML no raíz.

Ejemplo

import QtQuick

Item {
    component MyInlineComponent: Item {
        enum MyEnum { Hello, World }
    }
}

Para solucionar esta advertencia, mueva la declaración de enum al elemento raíz del archivo QML:

import QtQuick

Item {
    enum MyEnum { Hello, World }
    component MyInlineComponent: Item {
    }
}

Unknown argument to pragma

¿Qué ha ocurrido?

Ha especificado un argumento no válido para un pragma.

¿Por qué es malo?

El pragma no tendrá efecto.

Ejemplo

pragma ComponentBehavior: Buond
import QtQuick

Item {
}

Puede corregir esta advertencia eliminando el pragma o corrigiendo un posible error tipográfico:

pragma ComponentBehavior: Bound
import QtQuick

Item {
}

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