[Solved] Dynamic sourceComponent of Loader and changing property of components
-
Hi
Since you are using a Loader you can access the loaded Component using item. So
Component.onCompleted: { if (componentType === "component1") { loader.item.text = buttonText } else if (componentType === "component2") { loader.item.text = txt } }
P.S: The editor in this new forum using markdown syntax. So to add a code you can use ``` (3 backticks) with the same followed at the end.
-
You're Welcome :)
There's a topic combobox at the bottom. It has the "Mark Solved" option. -
Ok understood, so in that case to access delegates from outside ListView, you will need to use children or you can set an item as current item and then access it
listview.currentIndex=1 // 1 is index of delegate, listview = id of ListView console.log(listview.currentItem)
-
I have added the following code to access text of the components
Button { width: 100; height: 40; text: "Get Text"; anchors.top: listView.bottom onClicked: { listView.currentIndex = 2 // or anything else (0 - 3) console.log(listView.currentIndex, listView.currentItem.text) } }
The output (listView.currentItem.text) is alway undefined for any value of listView.currentIndex. Am I doing anything wrong?
-
Ok. Now you have to go further. The currentItem will be the Loader. Try getting children of it
console.log(listView.currentIndex, listView.currentItem.children)
and then try accessing the childrens. It is an array.
-
Well I do see it. Its the bottom entry in the combobox . I'll mark it as solved.
-
Strange I'm to not able to mark it as solved. Clicking doesn't have any effect.