2016-06-08 23:59 GMT+02:00 Jason H <jh...@gmx.com>: > I'm coming into this late, but can't you just set up: > > Item { // delegate > > Item { > id: view1 > visible: some_data_item_property == true > } > Item { > id: view2 > visible: !view1.visible > } > } > > Then make view1 and view2 your different delegates? You're just going after > two diferent views, right?
Well it's ~5, but indeed that seems to work great! A little test: import QtQuick 2.4 import QtQuick.Window 2.2 import "." Window { title: "Test" width: 600 height: 900 visible: true ListModel { id: listModel dynamicRoles: true Component.onCompleted: { append({ "type": "color", "name": "foo", "value": "red" }); append({ "type": "flag", "name": "bar", "value": false }); append({ "type": "choice", "name": "bar", "value": "Foo", "choices": ["Foo", "Bar"] }); } } ListView { anchors.fill: parent model: listModel delegate: Rectangle { implicitHeight: { if (type === "color") return colorDelegate.implicitHeight if (type === "flag") return flagDelegate.implicitHeight if (type === "choice") return choiceDelegate.implicitHeight } Text { id: colorDelegate text: value + " (color)" visible: type === "color" } Text { id: flagDelegate text: value + " (flag)" visible: type === "flag" } Text { id: choiceDelegate text: value + " (choice)" visible: type === "choice" } } } } I wonder why I haven't seen this approach before while searching around. Elvis > > Sent: Wednesday, June 08, 2016 at 11:49 AM > From: "Elvis Stansvik" <elvst...@gmail.com> > To: "Kristoffersen, Even (NO14)" <even.kristoffer...@honeywell.com>, > "interest@qt-project.org Interest" <interest@qt-project.org> > > Subject: Re: [Interest] Awkwardness of delegates in heterogenous ListViews > > 2016-06-08 15:41 GMT+02:00 Kristoffersen, Even (NO14) > <even.kristoffer...@honeywell.com>: >> Have you tried something like this in the delegate? >> >> property alias some_descriptive_name: parent > > It seems it's not allowed to use parent as the target of an alias (?): > > file:///home/estan/qte/qte/qml/ItemDelegate.qml:5 Invalid alias reference. > Unable to find id "parent" > > And this would still tie my "subdelegates" to this structure. They could not > be reused in other places, where lists are homogenous and I'm not using the > Loader approach. > > But I guess there's really no way to make a delegate that can be used in > both the "normal" situation and in the indirect-through-Loader approach. > > Elvis > >> >> (Not tested, just an idea) >> >> -Even >> >> -----Original Message----- >> From: Interest >> [mailto:interest-bounces+even.kristoffersen=honeywell....@qt-project.org] On >> Behalf Of Elvis Stansvik >> Sent: 8. juni 2016 15:34 >> To: interest@qt-project.org Interest <interest@qt-project.org> >> Subject: Re: [Interest] Awkwardness of delegates in heterogenous ListViews >> >> 2016-06-08 15:32 GMT+02:00 Elvis Stansvik <elvst...@gmail.com>: >>> Hi all, >>> >>> I'm currently using a "type" role in my items and then a Loader as >>> delegate, to give a level of indirection and let me choose the actual >>> delegate based on the "type" of the item. >>> >>> This explains it better (from my ListView): >>> >>> delegate: Loader { >>> sourceComponent: { >>> switch (type) { >>> case "color": >>> return colorDelegate >>> case "flag": >>> return flagDelegate >>> ... >>> } >>> } >>> >>> Component { >>> id: colorDelegate >>> >>> ColorDelegate { } >>> } >>> >>> Component { >>> id: flagDelegate >>> >>> FlagDelegate { } >>> } >>> >>> ... >>> } >>> >>> What I don't like with this approach is that inside my delegates, e.g. >>> ColorDelegate.qml, I have to use parent.ListView.view.model to get a >> >> I should clarify: I have to use this notation since it is the parent (the >> Loader) which is the real delegate and has the ListView attached properties. >> >> Elvis >> >>> reference to the model (needed for editing operations). The use of >>> "parent" here assumes a certain layout, but I see no other way :( >>> >>> How have others solved the issue of delegates for heterogenous lists? >>> >>> Best regards, >>> Elvis >> _______________________________________________ >> Interest mailing list >> Interest@qt-project.org >> http://lists.qt-project.org/mailman/listinfo/interest > > _______________________________________________ Interest mailing list > Interest@qt-project.org > http://lists.qt-project.org/mailman/listinfo/interest _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest