Sur cette page

Syntaxe

Cette catégorie d'avertissement est orthographiée [syntax] par qmllint.

Les composants imbriqués en ligne ne sont pas pris en charge

Qu'est-ce qui s'est passé ?

Vous avez défini un composant inline à l'intérieur d'un autre composant inline.

Pourquoi est-ce mauvais ?

Le langage QML n'autorise pas les composants en ligne imbriqués. Définissez toujours les composants inline à l'intérieur de l'élément racine du fichier QML.

Exemple

import QtQuick

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

Pour corriger cet avertissement, placez tous les composants à la racine du fichier QML.

import QtQuick

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

La déclaration d'un composant en ligne doit être suivie d'un nom de type.

Qu'est-ce qui s'est passé ?

Vous avez défini un composant en ligne avec un type de base non valide.

Pourquoi est-ce mauvais ?

Les composants inline ont besoin d'un type de base dont ils peuvent hériter.

Exemple

import QtQuick

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

Dans ce cas, someProperty n'est pas un nom de type valide, car il s'agit d'un nom de propriété. Pour corriger cet avertissement, utilisez un type valide comme type de base du composant :

import QtQuick

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

Expression d'alias non valide : un initialisateur est nécessaire

Qu'est-ce qui s'est passé ?

Vous avez défini un alias de propriété sans sa propriété aliasée.

Pourquoi est-ce mauvais ?

Les propriétés alias doivent toujours avoir leur propriété aliasée ou leur identifiant dans leur définition.

Exemple

import QtQuick

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

Pour corriger cet avertissement, remplacez l'alias par une propriété normale ou ajoutez la propriété alias manquante :

import QtQuick

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

Expression d'alias non valide : seuls les identifiants et les expressions de membres de champs peuvent être aliasés.

Qu'est-ce qui s'est passé ?

Vous avez défini un alias de propriété qui alias une expression autre qu'un ID ou une expression de membre de champ.

Une expression de membre de champ est une expression de la forme someId.someProperty.

Pourquoi est-ce mauvais ?

Les propriétés alias doivent toujours avoir la propriété aliasée dans leur définition et ne peuvent pas se lier à d'autres expressions que les ID et les expressions de membre de champ.

Exemple

import QtQuick

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

Pour corriger cet avertissement, remplacez l'alias par une propriété normale ou liez-le à une expression de type "id" ou "field member" :

import QtQuick

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

Id doit être suivi d'un identifiant

Que s'est-il passé ?

Vous avez défini un identifiant sans valeur.

Pourquoi est-ce mauvais ?

Le langage QML n'autorise pas les identifiants vides.

Exemple

import QtQuick

Item {
    id:;
}

Pour corriger cet avertissement, liez l'identifiant à un nom valide :

import QtQuick

Item {
    id: root;
}

Failed to parse id

Qu'est-ce qui s'est passé ?

Vous avez lié un identifiant à une expression autre qu'un nom.

Pourquoi est-ce mauvais ?

Le langage QML n'autorise que les noms pour lier les identifiants ; les expressions plus complexes ne peuvent pas être utilisées.

Exemple

import QtQuick

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

    id: f()
}

Pour corriger cet avertissement, liez l'identifiant à un nom valide ou déclarez une propriété et mettez en place une liaison :

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()
}

Déclaration d'un objet qui n'est pas un objet QML en tant que membre d'une liste

Qu'est-ce qui s'est passé ?

Vous avez ajouté une expression autre qu'un objet dans une liste d'objets.

Pourquoi est-ce mauvais ?

Le langage QML n'autorise que les objets dans les listes d'objets.

Exemple

import QtQuick

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

Pour corriger cet avertissement, utilisez un type d'objet valide ou supprimez l'élément de la liste :

import QtQuick

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

Les Enums déclarés à l'intérieur de composants inline sont ignorés

Qu'est-ce qui s'est passé ?

Vous avez défini une énumération à l'intérieur d'un composant en ligne.

Pourquoi est-ce mauvais ?

Le langage QML n'autorise les définitions d'enum qu'à l'intérieur de l'élément racine du fichier QML. Les enums déclarés à l'intérieur d'un composant inline sont inutilisables, même à l'intérieur du composant inline. Il en va de même pour les enums déclarés à l'intérieur d'objets QML non racine.

Exemple

import QtQuick

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

Pour corriger cet avertissement, déplacez la déclaration de l'enum dans l'élément racine du fichier QML :

import QtQuick

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

Unknown argument to pragma

Que s'est-il passé ?

Vous avez spécifié un argument non valide pour un pragma.

Pourquoi est-ce mauvais ?

Le pragma n'aura aucun effet.

Exemple

pragma ComponentBehavior: Buond
import QtQuick

Item {
}

Vous pouvez corriger cet avertissement en supprimant le pragma ou en corrigeant une éventuelle faute de frappe :

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.