非列表属性
不能将多个对象赋值给默认非列表属性
发生了什么?
默认属性有多个绑定,但默认属性类型不是列表类型,只期望一个绑定。
为什么这样不好?
除了最后一个绑定,默认属性的所有绑定都将被忽略。这很可能表明默认属性应该是一个列表,或者有太多绑定到同一个属性。
示例
让我们声明一个组件MyComponent
,它有一个默认的非列表属性,然后将三个项目绑定到该默认属性上
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 } }
© 2024 Qt公司有限公司。本文件中包含的文档贡献的版权归其各自的所有者。提供的文档根据由自由软件基金会发布的GNU自由文档许可版本1.3的条款进行许可。Qt以及相应的标志是芬兰和/或世界其他地区Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。