我在用QML设计应用程序时遇到了一个奇怪的问题。下面的代码可以工作:
TableView {
itemDelegate: Item {
function a() {}
Loader {}
}
}
我在这个item委托中有一堆函数、属性和加载器,它是一个item对象。当我尝试在ListView中重用这个委托时,问题就出现了。我不能像这样引用它:
Item {
id: myitem
function a() {}
Loader {}
}
TableView {
itemDelegate: myitem
}
error: Unable to assign QQuickItem to QQmlComponent
这是因为itemDelegate
是Component
:
http://qt-project.org/doc/qt-5/qml-qtquick-controls-tableview.html itemDelegate-prop
所以QML可以将Item
转换为Component
当它被嵌入,但不是当它被引用。
我不能让它成为一个组件,因为组件不能有函数,加载器,属性等。
如何重用委托?
解决方法:
Component {
Item{...}
}