- Qt 6.12
- Qt Qml
- Qt Qml Tooling
- qmllint
- QML Lint Warning and Errors
- Non-list property
- Qt 6.12.0 Reference Documentation

Multiline strings ◦ Enum declared outside the root element

# Non-list property

This warning category is spelled `[non-list-property]` by qmllint.

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

To fix this warning, replace 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
         }
     }

To fix this warning, remove 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
         }
     }

Multiline strings ◦ Enum declared outside the root element