Syntax

Diese Warnkategorie wird von qmllint mit [syntax] geschrieben.

Verschachtelte Inline-Komponenten werden nicht unterstützt

Was ist passiert?

Sie haben eine Inline-Komponente innerhalb einer anderen Inline-Komponente definiert.

Warum ist das schlecht?

Die QML-Sprache erlaubt keine verschachtelten Inline-Komponenten. Definieren Sie Inline-Komponenten immer innerhalb des Wurzelelements der QML-Datei.

Beispiel

import QtQuick

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

Um diese Warnung zu beheben, verschieben Sie alle Komponenten in das Wurzelelement der QML-Datei.

import QtQuick

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

Auf die Deklaration einer Inline-Komponente muss ein Typename folgen

Was ist passiert?

Sie haben eine Inline-Komponente mit einem ungültigen Basistyp definiert.

Warum ist das schlecht?

Inline-Komponenten benötigen einen Basistyp, von dem sie erben können.

Beispiel

import QtQuick

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

In diesem Fall ist someProperty kein gültiger Typname, da es ein Eigenschaftsname ist. Um diese Warnung zu beheben, verwenden Sie einen gültigen Typ als Basistyp für die Komponente:

import QtQuick

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

Ungültiger Alias-Ausdruck: ein Initialisierer wird benötigt

Was ist passiert?

Sie haben einen Eigenschaftsalias ohne die zugehörige Eigenschaft definiert.

Warum ist das schlecht?

Alias-Eigenschaften müssen immer ihre Aliaseigenschaft oder id in ihrer Definition haben.

Beispiel

import QtQuick

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

Um diese Warnung zu beheben, ersetzen Sie den Alias durch eine normale Eigenschaft oder fügen Sie die fehlende Aliaseigenschaft hinzu:

import QtQuick

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

Ungültiger Alias-Ausdruck: Nur IDs und Feldmitgliedausdrücke können als Alias verwendet werden.

Was ist passiert?

Sie haben einen Eigenschaftsalias definiert, der einen anderen Ausdruck als eine ID oder einen Feldmitgliedausdruck aliasiert.

Ein Feldmitgliedausdruck ist ein Ausdruck der Form someId.someProperty.

Warum ist das schlecht?

Aliaseigenschaften müssen immer ihre Aliaseigenschaft in ihrer Definition haben und können nicht an andere Ausdrücke als IDs und Feldmemberausdrücke gebunden werden.

Beispiel

import QtQuick

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

Um diese Warnung zu beheben, ersetzen Sie den Alias durch eine normale Eigenschaft oder binden Sie ihn an einen ID- oder Feldausdruck:

import QtQuick

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

Id muss von einem Bezeichner gefolgt werden

Was ist passiert?

Sie haben eine id ohne einen Wert definiert.

Warum ist das schlecht?

Die QML-Sprache erlaubt keine leeren Ids.

Beispiel

import QtQuick

Item {
    id:;
}

Um diese Warnung zu beheben, binden Sie die id an einen gültigen Namen:

import QtQuick

Item {
    id: root;
}

Failed to parse id

Was ist passiert?

Sie haben eine id an einen anderen Ausdruck als einen Namen gebunden.

Warum ist das schlecht?

Die QML-Sprache erlaubt nur Namen als Bindungen an ids; komplexere Ausdrücke können nicht verwendet werden.

Beispiel

import QtQuick

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

    id: f()
}

Um diese Warnung zu beheben, binden Sie die id an einen gültigen Namen oder deklarieren Sie eine Eigenschaft und richten Sie eine Bindung ein:

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

Deklaration eines Objekts, das kein QML-Objekt ist, als Listenmitglied

Was ist passiert?

Sie haben einen Ausdruck, der kein Objekt ist, in eine Liste von Objekten eingefügt.

Warum ist das schlecht?

Die QML-Sprache erlaubt nur Objekte in Objektlisten.

Beispiel

import QtQuick

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

Um diese Warnung zu beheben, verwenden Sie einen gültigen Objekttyp, oder entfernen Sie das Element aus der Liste:

import QtQuick

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

Innerhalb von Inline-Komponenten deklarierte Enums werden ignoriert

Was ist passiert?

Sie haben eine Enum innerhalb einer Inline-Komponente definiert.

Warum ist das schlecht?

Die QML-Sprache erlaubt Enum-Definitionen nur innerhalb des Root-Elements der QML-Datei. Enums, die innerhalb einer Inline-Komponente deklariert werden, sind unbrauchbar, auch innerhalb der Inline-Komponente. Dasselbe gilt für Enums, die innerhalb von Nicht-Root-QML-Objekten deklariert werden.

Beispiel

import QtQuick

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

Um diese Warnung zu beheben, verschieben Sie die Enum-Deklaration in das Root-Element der QML-Datei:

import QtQuick

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

Unbekanntes Argument für pragma

Was ist passiert?

Sie haben ein ungültiges Argument für ein pragma angegeben.

Warum ist das schlecht?

Das pragma wird keine Wirkung haben.

Beispiel

pragma ComponentBehavior: Buond
import QtQuick

Item {
}

Sie können diese Warnung beheben, indem Sie das pragma entfernen oder einen möglichen Tippfehler korrigieren:

pragma ComponentBehavior: Bound
import QtQuick

Item {
}

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