variable items in ListView delegates
-
Hi all -
I'm trying to code a page with a ListView that (partiallly) uses a ListModel for the data. I know the values in the ListElements must be simple constants, so I can't use my ListModel for this. How would it be done?
Here's what I have so far:
ListModel { id: adminModel ListElement { rowIcon: "qrc:/icons/Display.svg"; rowText: "About" } ListElement { rowIcon: "qrc:/icons/LockKey.svg"; rowText: "Lockouts" } ListElement { rowIcon: "qrc:/icons/ProfileAdmin.svg"; rowText: "Backup & Restore" } } ListView { model: adminModel delegate: ExpandingPane { lineIcon: rowIcon lineText: rowText extraItems: Loader { sourceComponent: resetRowDetails } // how to change this for each element? } } Component { id: resetRowDetails ...How can I make my extraItems different for each list element?
Thanks...
-
Hi all -
I'm trying to code a page with a ListView that (partiallly) uses a ListModel for the data. I know the values in the ListElements must be simple constants, so I can't use my ListModel for this. How would it be done?
Here's what I have so far:
ListModel { id: adminModel ListElement { rowIcon: "qrc:/icons/Display.svg"; rowText: "About" } ListElement { rowIcon: "qrc:/icons/LockKey.svg"; rowText: "Lockouts" } ListElement { rowIcon: "qrc:/icons/ProfileAdmin.svg"; rowText: "Backup & Restore" } } ListView { model: adminModel delegate: ExpandingPane { lineIcon: rowIcon lineText: rowText extraItems: Loader { sourceComponent: resetRowDetails } // how to change this for each element? } } Component { id: resetRowDetails ...How can I make my extraItems different for each list element?
Thanks...
@mzimmers are you saying you want to use a difference component depending on your model item? In that case you can have some field in your model to tag the different types and use a
switchin yourLoader. Something like this:Component { id: delegateA A { ...} } Component { id: delegateB B { ...} } Loader { ... sourceComponent: { switch (delegate_type) { case "A": return delegateA case "B": return delegateB ... } -
@mzimmers are you saying you want to use a difference component depending on your model item? In that case you can have some field in your model to tag the different types and use a
switchin yourLoader. Something like this:Component { id: delegateA A { ...} } Component { id: delegateB B { ...} } Loader { ... sourceComponent: { switch (delegate_type) { case "A": return delegateA case "B": return delegateB ... }@Bob64 nice. I didn't know that QML had a switch statement. Thanks!
ListModel { id: adminModel ListElement { rowName: "about"; rowIcon: "qrc:/icons/Display.svg"; rowText: "About" } ListElement { rowName: "lockouts"; rowIcon: "qrc:/icons/LockKey.svg"; rowText: "Lockouts" } ListElement { rowName: "backup"; rowIcon: "qrc:/icons/ProfileAdmin.svg"; rowText: "Backup & Restore" } ListElement { rowName: "reboot"; rowIcon: "qrc:/icons/ShieldStar.svg"; rowText: "Soft Reboot" } ListElement { rowName: "reset"; rowIcon: "qrc:/icons/DateTime.svg"; rowText: "Factory Reset" } } ListView { model: adminModel delegate: ExpandingRow { lineIcon: rowIcon lineText: rowText extraItems: Loader { sourceComponent: switch (rowName) { case "reset": resetRowDetails; break; } } } -
M mzimmers has marked this topic as solved on