[Interest] XYZ is instantiated recursively

Dmitry Volosnykh dmitry.volosnykh at gmail.com
Thu Jan 15 13:55:01 CET 2015


Nuno, sorry, but it is hard to follow your last code snippet since it is
overloaded with "noise" lines.

Anyway, did you try to achieve your goal using Item's children property?
This is how Rectangles and other items get nested.

PS. Am I right that you're trying to implement a tree structure? If so,
searching by phrase "qml tree view" provided me with following
articles/discussions:
http://www.codeproject.com/Articles/632795/QML-TreeModel-and-TreeView
http://qt-project.org/forums/viewthread/30521
Disclaimer: did not try any of the above myself.

On Thu, Jan 15, 2015 at 3:31 PM, Nuno Santos <nunosantos at imaginando.pt>
wrote:

> Dmitry,
>
> I was able to do recursive instantiation using the following technic
> (actual code).
>
> However, i’m having problems when the model is updated. With a single
> level everything is ok. If there is recursion, when the model is deleted,
> it crashes. Don’t know why.
>
> Flow {
>     id: flow
>     anchors.top: parent.top
>     anchors.left: parent.left
>     anchors.right: parent.right
>     spacing: 5
>
>     Repeater {
>         id: repeater
>         delegate: Component {
>             id: cc
>
>             Item {
>                 width: flow.width
>                 height: 200
>
>                 Rectangle {
>                     id: label
>                     width: 40
>                     anchors.left: parent.left
>                     height: 200
>                     color: "#333333"
>                     border.color: "black"
>                     border.width: 1
>                     radius: 2
>
>                     Text {
>                         id: labelText
>                         color: "white"
>                         text: modelData.name
>                         font.family: mainFont.name
>                         font.pixelSize: 12
>                         font.capitalization: Font.AllUppercase
>                         rotation: -90
>                         anchors.top: parent.bottom
>                         width: label.height-icon.height-35
>                         anchors.topMargin: -15
>                         anchors.left: parent.left
>                         anchors.leftMargin: 10
>                         transformOrigin: Item.TopLeft
>                         elide: Text.ElideRight
>                     }
>                 }
>
>                 Flickable {
>                     anchors.left: label.right
>                     anchors.leftMargin: 10
>                     anchors.right: parent.right
>                     height: 200
>                     contentWidth: label.width+row.childrenRect.width
>                     clip: true
>
>                     Row {
>                         id: row
>                         height: 180
>
>                         Repeater {
>                             id: parametersList
>                             model: modelData.parameters
>                             delegate: ModuleLaunchpadDeviceParameter {
>                                 height: 200
>                                 parameter: modelData
>                             }
>                         }
>
>                         ListView {
>                             id: chainsList
>                             model: modelData.chains
>                             width: 100
>                             height: 200
>                             spacing: 5
>                             delegate: Rectangle {
>                                 width: 100
>                                 height: 40
>                                 color: "green"
>                                 MouseArea {
>                                     anchors.fill: parent
>                                     onClicked:
> chainsList.currentIndex=index
>                                 }
>                             }
>                         }
>
>                         Repeater {
>                             id: chainsDevicesList
>                             model:
> chainsList.count>0?chainsList.model[chainsList.currentIndex].devices:0
>                             delegate: cc
>                         }
>                     }
>                 }
>             }
>         }
>     }
> }
>
> Thanks,
>
> Regards,
>
> Nuno
>
> On 15 Jan 2015, at 10:06, Nuno Santos <nunosantos at imaginando.pt> wrote:
>
> Dimitry,
>
> You are right. Let’s start by the model.
>
> My model is made of devices which can have list of devices (recursive
> model).
>
> I want to list A’s so I do something like:
>
> ListView {
> model: model.devices
> delegate: Device {
> parameters: modelData.parameters
> devices: modelData.devices
> }
>
> // Device.qml
>
> Rectangle {
> id: root
>
> property alias parameters: parameters.model
> property alias devices: devices.model
>
> ListView {
> id: parameters
> }
>
> Device {
> id: devices
>
> }
> }
>
> Qml output: Device is istantiated recursively
>
> Regards,
>
> Nuno
>
> On 15 Jan 2015, at 10:00, Dmitry Volosnykh <dmitry.volosnykh at gmail.com>
> wrote:
>
> Nuno, it is sometimes hard to get an idea of what exactly you are trying
> to do without any minimal sample code provided.
>
> On Thu, Jan 15, 2015 at 12:57 PM, Nuno Santos <nunosantos at imaginando.pt>
> wrote:
>
>> Hi,
>>
>> I’m building a QML UI interface for a model that can have a recursive
>> behaviour
>>
>> I’m trying to instantiate a custom module inside a custom module and it
>> is saying XYZ is instantiated recursively.
>>
>> Why does this error doesn’t occur when you instantiate a Rectangle inside
>> a Rectangle? Isn’t that the same?
>>
>> If I really want the same module to appear to model that by it’s own is
>> recursive, what should I do? I cannot have a different Qml file for each
>> recursive depth as I don’t know what will be the total depth of it. And it
>> simply doesn’t make sense…
>>
>> Any ideas?
>>
>> Thanks,
>>
>> Nuno Santos
>> _______________________________________________
>> Interest mailing list
>> Interest at qt-project.org
>> http://lists.qt-project.org/mailman/listinfo/interest
>>
>
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20150115/e8b58fde/attachment.html>


More information about the Interest mailing list