2、QML之Repeater重复器

本文介绍了QML中的Repeater组件,它用于创建和展示大量相似的界面项。Repeater通常与布局控件如Row、Column、Grid结合使用。文章详细讲解了Repeater的属性(count、delegate、model)、信号(itemAdded、itemRemoved)和方法(itemAt)。此外,还给出了使用示例,展示了如何结合ListModel和Delegate来创建和响应项的增删。Repeater适用于简单的重复项展示,对于少量项,使用Repeater比ListView等视图控件在性能上有优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


转载

1、简介

Repeater控件用于创建大量类似的项。与其他视图控件(ListView,PathView)类似。单纯使用Repeater控件没多大作用,一般与布局类控件(Row,Column,Grid)搭配使用。

2、使用文档

2.1、属性:

count:共有多少实例项。
delegate:用于界面显示的委托项(当Repeater下只有一个控件时可以省略写该标记)。
model:数据模型项,用于为delegate提供数据支持。

2.2、信号:

itemAdded(int index, Item item):当Repeater有项增加时触发该信号。
itemRemoved(int index, Item item):当Repeater有项被移除时触发该信号。

2.3、方法:

Item itemAt(index):通过下标查找Repeater的项。

3、使用场景

Repeater更多的作用是用于展示多个重复项,不是用来交互(滑动)。
仅仅是用于项比较少的情况下,用Repeater代替ListView等视图项会有性能上的提升。

4、示例

    ListModel {
        /* 数据项 */
        id: myModel
        ListElement { colour: "red"; }
        ListElement { colour: "blue"; }
        ListElement { colour: "green"; }
    }

    Component {
        /* 代理项(实例),可以自己通过布局修饰 */
        id: myDelegate
        Rectangle {
            width: 80; height: 50
            color: colour /* 通过数据项(model)映射获得。 */

            MouseArea {
                anchors.fill: parent
                /* 点击添加一个数据项,界面因此会多一个项显示。 */
                onClicked: myModel.append({colour: "lightblue"})
            }
        }
    }
    
    Grid {
        columns: 2
        Repeater {
         id: repeater
         model: myModel
         delegate: myDelegate
         onItemAdded: console.log("Add Item.", index, item.color)
         onItemRemoved: console.log("Remove Item.", index, item.color)
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值