構文

この警告カテゴリーはqmllintによって[syntax]

ネストされたインラインコンポーネントはサポートされていません

何が起こりましたか?

別のインラインコンポーネントの中にインラインコンポーネントを定義しました。

これはなぜ悪いのでしょうか?

QML言語ではインラインコンポーネントを入れ子にすることはできません。インラインコンポーネントは常にQMLファイルのルートアイテムの中で定義してください。

import QtQuick

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

この警告を修正するには、すべてのコンポーネントをQMLファイルのルート項目に移動してください。

import QtQuick

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

インラインコンポーネントの宣言の後には必ずtypenameを付けてください。

何が起こったのでしょうか?

インラインコンポーネントを無効な基本型で定義しました。

これはなぜ悪いのでしょうか?

インラインコンポーネントには継承するための基底型が必要です。

import QtQuick

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

この場合、someProperty はプロパティ名であり、有効な型名ではありません。この警告を修正するには、コンポーネントの基本型として有効な型を使用してください:

import QtQuick

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

無効なエイリアス式: イニシャライザが必要です。

何が起こったのでしょうか?

エイリアス・プロパティを定義せずに、プロパティのエイリアスを定義しました。

これはなぜ悪いのでしょうか?

エイリアス・プロパティは常に、その定義にエイリアス・プロパティまたはidを持つ必要があります。

import QtQuick

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

この警告を修正するには、エイリアスを通常のプロパティに置き換えるか、不足しているエイリアス・プロパティを追加してください:

import QtQuick

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

無効なエイリアス式: エイリアスできるのは、idとフィールド・メンバ式だけです。

何が起こったのでしょうか?

ID またはフィールド・メンバ式以外の式をエイリアスにするプロパティ・エイリアスを定義しました。

フィールド・メンバ式は、someId.someProperty という形式の式です。

これはなぜ悪いのでしょうか?

エイリアス・プロパティは常にその定義にエイリアス・プロパティを持つ必要があり、ID やフィールド・メンバ式以外の式にバインドすることはできません。

import QtQuick

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

この警告を修正するには、エイリアスを通常のプロパティに置き換えるか、idまたはフィールド・メンバ式にバインドします:

import QtQuick

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

idの後には識別子を続けなければなりません。

何が起こったのでしょうか?

値なしでidを定義しました。

これはなぜ悪いのでしょうか?

QML言語は空のidを許しません。

import QtQuick

Item {
    id:;
}

この警告を修正するには、id を有効な名前にバインドしてください:

import QtQuick

Item {
    id: root;
}

idの解析に失敗しました

何が起こったのでしょうか?

idを名前以外の式にバインドしました。

これはなぜ悪いのでしょうか?

QML言語では、idへのバインディングとして名前しか使用できません。

import QtQuick

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

    id: f()
}

この警告を修正するには、idを有効な名前にバインドするか、プロパティを宣言してバインドを設定してください:

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

QMLオブジェクトでないオブジェクトをリストメンバーとして宣言する

何が起こったのでしょうか?

オブジェクト以外の式をオブジェクトのリストに追加しました。

これはなぜ悪いのでしょうか?

QML言語では、オブジェクトリストの中にオブジェクトを入れることしかできません。

import QtQuick

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

この警告を修正するには、有効なオブジェクト型を使用するか、リストからその項目を削除してください:

import QtQuick

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

インラインコンポーネント内で宣言された列挙型は無視される

何が起こったのでしょうか?

インラインコンポーネントの内部で列挙型を定義しました。

これはなぜ悪いのでしょうか?

QML言語では、enumの定義はQMLファイルのルートアイテムの内部でのみ許可されています。インラインコンポーネントの内部で宣言された列挙型は、インラインコンポーネントの内部であっても使用できません。ルートでないQMLオブジェクトの内部で宣言された列挙型も同様です。

import QtQuick

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

この警告を修正するには、enum宣言をQMLファイルのルート要素に移動してください:

import QtQuick

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

プラグマへの不明な引数

何が起こったのでしょうか?

プラグマに無効な引数を指定しました。

なぜ悪いのですか?

このプラグマは何の効果も持ちません。

pragma ComponentBehavior: Buond
import QtQuick

Item {
}

プラグマを削除するか、タイプミスを修正することで、この警告を修正することができます:

pragma ComponentBehavior: Bound
import QtQuick

Item {
}

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。