Reusing a delegate component in QML
-
wrote on 31 Jul 2014, 15:15 last edited by
0 down vote favorite
I came across a weird problem when designing my application in QML. The following code works:
@TableView {
itemDelegate: Item {
function a() {}
Loader {}
}
}
@
I have a bunch of functions, properties, and loaders in this item delegate which is an Item object. Problems arise when I try to reuse this delegate in a ListView. I can't reference it like this:
@
Item {
id: myitem
function a() {}
Loader {}
}TableView {
itemDelegate: myitem
}error: Unable to assign QQuickItem to QQmlComponent@
This is because itemDelegate is a Component:
http://qt-project.org/doc/qt-5/qml-qtquick-controls-tableview.html#itemDelegate-prop
So QML can convert an Item to Component when it's embedded, but not when it's referenced.
And I can't make it a component, since components can't have functions, loaders, properties etc.
How can I reuse my delegate?
-
wrote on 31 Jul 2014, 15:49 last edited by
You just need to wrap your item in a Component:
@Component {Item{...}}@
-
wrote on 31 Jul 2014, 16:00 last edited by
Thanks so much! It worked.
I'm new to Qt, so you saved me a lot of time :)
Thanks again.
1/3