- Qt 6.7
- Qt QML
- QML Lint Warning and Errors
- Non-List Property
- Qt 6.7.1 Reference Documentation

# Non-List Property

## Cannot Assign Multiple Objects To A Default Non-List Property

### What happened?

A default property has multiple bindings but the default property type is not a list type and only expects one binding.

### Why is this bad?

All the bindings to the default property, except the last one, will be ignored. This most likely hints that the default property should instead be a list, or that there are too many bindings to the same property.

### Example

Let's declare a component `MyComponent` that has one default non-list property, and then lets bind three items to that default property:

     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"
         }
     }

You can fix this warning by replacing the default property by a list:

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

You can also fix this warning by removing all the unwanted bindings, in case the default property is not supposed to be a 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
         }
     }