QML 基本模型 repeater(一)

前言

最基本的分离数据与显示的方法是使用Repeater元素。它被用于实例化一组元素 项,并且很容易与一个用于填充用户界面的定位器相结合。 最基本的实现举例,repeater元素用于实现子元素的标号。每个子元素都拥有一个 可以访问的属性index,用于区分不同的子元素

基本用法

import QtQuick 2.14
import QtQuick.Controls 2.14

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Tabs")
    Column
    {
        spacing: 5
        anchors.centerIn: parent
        Repeater
        {
            id:rep
//            model:10
//            model: ["11111","22222","33333","44444","555555","6666","777777"]
            model: ListModel{
                ListElement{name1: "heisai";value:"123456"}
            }
            Rectangle
            {
                id: yang
                width: 640
                height: 30
                radius: 3
                color: "lightBlue"
                Text {
                    id: name
                    anchors.centerIn: parent
                    //text: qsTr("text:"+ index)
                    //text: qsTr("text:" + modelData)
                    text: qsTr("text:" + name1 + value)
                }
                MouseArea
                {
                    anchors.fill: parent
                    onClicked:
                    {
                        console.log(name.text)
                    }
                }
            }
        }
    }
}

上面演示了三种用法:
1: model: 10 对应 text 只能获取到他的index 属性
2: model: [“11111”] 对应text 可以获取到 index, 以及modelData .
3: model: ListModel{
ListElement{name1: “heisai”;value:“123456”}
}
相对来说 比较自由,后面用来添加, 移除子元素

效果图data

在这里插入图片描述

添加 移除 元素

import QtQuick 2.14
import QtQuick.Controls 2.14

ApplicationWindow {
    visible: true
    width: 400
    height: 600
    title: qsTr("Tabs")


    Column{
        anchors.centerIn: parent
        ListModel
        {
            id:my_model
            ListElement{name: "q";}
        }
        Component
        {
            id: my_delegate
            Rectangle
            {
                width: 40
                height: 35
                color: "red"
                Text {
                    id:my_text
                    anchors.centerIn: parent
                    text:name
                }
                MouseArea
                {
                    anchors.fill:  parent
                    onClicked:
                    my_model.append({name: "q"}) // 添加一个元素
                    //my_model.remove(index)	// 移除一个元素
                }
            }

        }
        Repeater
        {
            model: my_model
            delegate:my_delegate
            onItemAdded: console.log("add a item")
        }
    }

}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值