QML类型:Repeater

一、描述

Repeater 类型用于创建大量相似的项目。是一种视图元素。与其他视图类型一样,Repeater 有一个模型和一个委托。

Repeater 项通常包含在定位器类型中,例如 Row 或 Column,以直观地定位由 Repeater 创建的多个委托项。

下面的 Repeater 在一行中创建了 Rectangle 项的三个实例:

import QtQuick 2.0

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

Repeater 的模型可以是任何受支持的数据模型。此外,与其他视图的委托一样,Repeater 委托可以访问其在 Repeater 中的索引,以及与委托相关的模型数据。

由 Repeater 实例化的项目按顺序插入,作为 Repeater 的父项的子项。Repeater 项拥有它实例化的所有项。删除或动态销毁由 Repeater 创建的项目会导致不可预测的行为。

Repeater 类型在第一次创建中继器时创建其所有委托项。如果有大量委托项并且不是所有的项都需要同时可见,则这可能是低效的。这种情况,请考虑使用其他视图类型,如 ListView(仅在滚动到视图中时创建委托项)或使用动态对象创建方法在需要时创建项。

另请注意,Repeater 是基于 Item 的,并且只能重复 Item 派生的对象。例如,它不能用于重复 QtObjects

// 错误的代码:
Item
{
    Repeater 
    {
        model: 10
        QtObject {}
    }
}

二、属性成员

1、count : int

此属性保存模型中的项目数。

2、delegate : Component 【默认类型(省略 delegate)】

委托提供了一个模板,定义了由 Repeater 实例化的每个项目。

委托公开给只读索引属性,该属性指示 Repeater 中委托的索引。

例如,以下 Text 委托显示每个重复项的索引:

如果模型是字符串列表或对象列表,则委托还会公开给包含字符串或对象数据的只读 modelData 属性。例如:

3、model : any

为 Repeater 提供数据的模型。

此属性可以设置为任何受支持的数据模型:

  • 一个数字,表示要由中继器创建的委托数量
  • 模型(例如 ListModel 项或 QAbstractItemModel 子类)
  • 一个字符串列表
  • 对象列表

模型的类型会影响向委托公开的属性。

三、信号成员

1、itemAdded(int index, Item item)

当一个项目被添加到 Repeater 时会发出这个信号。

index 参数保存在 Repeater 中插入项的索引,item 参数保存已添加的项。

2、itemRemoved(int index, Item item)

当 item 从中继器中移除时,会发出此信号。index 参数保存从转发器中删除项的索引,而 item 参数保存删除的项。

如果 item 是由此转发器创建的,则不要保留对 item 的引用,因为在这些情况下,它会在处理信号后不久被删除。

四、成员函数

1、Item itemAt(index)

返回已在给定索引处创建的项,如果索引处不存在项,则返回 null。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值