QML---Repeater

repeater是用来重复创建同一类型组件的对象,嗯。。提到这个首先得知道QML的一些机制,提倡设计者让数据与模型分离开来,数据是数据模型是模型。repeater就可以根据数据,调用同一个模型去创建多个对象。直接举个例子吧

 import QtQuick 2.0

 Row {
     Repeater {
         model: 3
         delegate:Rectangle {
             width: 100; height: 40
             border.width: 1
             color: "yellow"
         }
     }
 }

这是QT帮助文档里面的代码 Row是一个布局器,只看repeater部分,这个是代表创建3个这样的rectangle。

model属性存放数据,可以是数字,也可以是数组,还可以是一个数据类型的对象

delegate属性存放模型,在repeater中,这个delegate属性名是可以省略的,直接写模型也是没问题的,这个模型会调用model的数据

通过repeater生成的对象如果想要访问的话就需要通过repeater的 Item itemAt(index) 函数进行访问

定义模型就不说了,这里具体讲的是数据的定义,一般数据分三种情况:

1.模型不需要数据,只需要指定个数

这种情况只需要将model给定一个数字,代表创建几个,就类似于开头例子那样

2.模型需要简单的数据,这个时候可以使用数组进行创建

这个时候数组的长度,就是创建的个数,数组的内容就是模型的数据,如下面的例子所示:

Repeater{
        id:id_repeater
        model: ["data1","data2"]
        Rectangle{
            width: 120
            height: 120
            color: "red"
            visible: index === 0
            Text {
                text: modelData
                anchors.verticalCenter: parent.verticalCenter
                anchors.horizontalCenter: parent.horizontalCenter
                color: "black"
            }
        }
    }

这样就会创建两个内部有文字的rectangle,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值