リスト以外のプロパティ

この警告カテゴリーはqmllintによって[non-list-property]

デフォルトの非リストプロパティに複数のオブジェクトを割り当てることはできません。

何が起こりましたか?

デフォルト・プロパティは複数のバインディングを持ちますが、デフォルト・プロパティ・タイプはリスト・タイプではなく、1つのバインディングしか想定していません。

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

デフォルト・プロパティへのバインディングは、最後のバインディングを除いてすべて無視されます。これは、デフォルト・プロパティがリストであるべきであるか、同じプロパティへのバインディングが多すぎることを示唆しています。

リスト以外のデフォルト・プロパティを1つ持つコンポーネントMyComponent を宣言し、そのデフォルト・プロパティに3つの項目をバインドしてみましょう:

import QtQuick

Item {
    component MyComponent: QtObject {
        default property Item helloWorld
    }
    MyComponent {
        // first item bound to default property:
        Item { objectName: "first" } // will warn: Cannot assign multiple objects to a default non-list property [non-list-property]
        // second item bound to default property:
        Item { objectName: "second" } // not ok: default property was bound already
        // third item bound to default property:
        Item { objectName: "third" } // not ok: default property was bound already

        Component.onCompleted: console.log(helloWorld.objectName) // prints "third"
    }
}

この警告を修正するには、デフォルト・プロパティをリストで置き換えます:

import QtQuick

Item {
    component MyComponent: QtObject {
        default property list<Item> helloWorld
    }
    MyComponent {
        // first item bound to default property:
        Item { objectName: "first" } // ok: binding a first item to the list
        // second item bound to default property:
        Item { objectName: "second" } // ok: binding a second item to the list
        // third item bound to default property:
        Item { objectName: "third" } // ok: binding a third item to the list
    }
}

この警告を修正するには、デフォルトのプロパティをリストに置き換えてください:

import QtQuick

Item {
    component MyComponent: QtObject {
        default property Item helloWorld
    }
    MyComponent {
        Item { objectName: "first" } // ok: just one item bound to default property
    }
    MyComponent {
        Item { objectName: "second" } // ok: just one item bound to default property
    }
    MyComponent {
        Item { objectName: "third" } // ok: just one item bound to default property
    }
}

この警告を修正するには、デフォルト・プロパティがリストであると想定されていない場合に、不要なバインディングをすべて削除してください 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。