有时,链表的数据需要分组。例如使用首字母来划分联系人,或者分类音乐。使用链表视图可以把平面列表按类别划分。
为了使用分组,section.property与section.criteria必须设置。section.property定义了哪些属性用于内容的划分。在这里,最重要的是知道每一组的元素必须连续,否则相同的属性名可能出现在几个不同的地方。
section.criteria能够被设置为ViewSection.FullString或者
ViewSection.FirstCharacter。默认下使用第一个值,能够被用于模型中有清晰的分组,例如音乐专辑。第二个是使用一个属性的首字母来分组,这说明任何属性都可以被使用。通常的例子是用于联系人名单中的姓。
当组被定义好后,每个子项能够使用绑定属性ListView.section,ListView.previousSection与ListView.nextSection来访问。使用这些属性,可以检测组的第一个与最后一个子项。
使用ListView的section.delegate属性可以给组指定代理组件。它能够创建段标题,并且可以在任意子项之前插入这个段代理。使用绑定属性section可以访问当前段的名称。
下面这个例子使用国际分类展示了分组的一些概念。国籍作为section.property,组代理组件(section.delegate)使用每个国家作为标题。在每个组中,spacemen模型中的名字使用spaceManDelegate组件来代理显示。
import QtQuick 2.3 import QtQuick.Window 2.2 Window { id: root visible: true width: 480 height: 300 color: "white" ListView { anchors.fill: parent anchors.margins: 20 clip: true model: spaceMen delegate: spaceManDelegate section.property: "nation" section.delegate: sectionDelegate } Component { id: spaceManDelegate Item { width: 260 height: 20 Text { anchors.left: parent.left anchors.verticalCenter: parent.verticalCenter anchors.leftMargin: 10 font.pixelSize: 12 text: name } } } Component { id: sectionDelegate Rectangle { width: 260 height: 20 color: "lightBlue" Text { anchors.left: parent.left anchors.verticalCenter: parent.verticalCenter anchors.leftMargin: 10 font.pixelSize: 12 font.bold: true text: section } } } ListModel { id: spaceMen ListElement { name: "小赵"; nation: "中国" } ListElement { name: "小钱"; nation: "中国" } ListElement { name: "小孙"; nation: "中国" } ListElement { name: "小李"; nation: "中国" } ListElement { name: "Amy"; nation: "美国" } ListElement { name: "David"; nation: "美国" } ListElement { name: "Kim"; nation: "美国" } ListElement { name: "Helen"; nation: "俄罗斯" } ListElement { name: "Kate"; nation: "俄罗斯" } } }
运行效果如下:
如果同一组下的内容不联系,如下面的代码所示:
ListModel { id: spaceMen ListElement { name: "小赵"; nation: "中国" } ListElement { name: "小钱"; nation: "中国" } ListElement { name: "Amy"; nation: "美国" } ListElement { name: "Kim"; nation: "美国" } ListElement { name: "Helen"; nation: "俄罗斯" } ListElement { name: "Kate"; nation: "俄罗斯" } ListElement { name: "小孙"; nation: "中国" } ListElement { name: "小李"; nation: "中国" } ListElement { name: "David"; nation: "美国" } }
即会出现多个相同的属性名,运行效果如下:
手机视频播放器排行榜前十名 手机视频播放器十大排名
2018什么播放器最好用呢?电视播放器有那些可以推荐的?今天,就为大家推荐五款非常好用的播放器,让你拥有极致的观影体验。 1、暴风影音播放器 暴风影音播放器TV版是专为智能电视和安卓电视盒子(0)人阅读时间:2023-08-23桌面提醒软件哪个好 桌面提醒怎么设置
有很多人在工作的时候,都会用到各种各样的辅助工具,为了提醒自己的未来计划安排,不少人都想找一款好用的提醒工具软件。在寻找这类软件的时候,网上的推荐是一个不错的参考。网上推荐的提醒工具软件哪款好?我平时(0)人阅读时间:2023-08-23硬盘扫描工具怎么用(硬盘扫描工具怎么用啊)
不少朋友在购买固态硬盘后对于如何检测比较迷茫,怎样才能确定自己买到的固态硬盘是否正常工作了呢?盲目的检测有可能会误导自己的判断,存储极客以使用3D闪存的东芝TR200为例来为大家科普解读固态硬盘到手检(0)人阅读时间:2023-08-23电脑系统一键重装哪个软件好 哪个一键重装系统最好最纯净
提起重装系统很多人下意识的觉得这是一个非常难的操作,即使现在随便一搜就有许多的教程,但是那些眼花缭乱的操作看着就觉得头疼。不过微软也针对这种情况推出一款适合普通用户且操作简单的系统重装软件。 这款软(0)人阅读时间:2023-08-23qt listview详细用法
前言有时,链表的数据需要分组。例如使用首字母来划分联系人,或者分类音乐。使用链表视图可以把平面列表按类别划分。如何分组?为了使用分组,section.property与section.criteria..2023-08-23手机视频播放器排行榜前十名 手机视频播放器十大排名
2018什么播放器最好用呢?电视播放器有那些可以推荐的?今天,就为大家推荐五款非常好用的播放器,让你拥有极致的观影体验。 1、暴风影音播放器 暴风影音播放器TV版是专为智能电视和安卓电视盒子..2023-08-23桌面提醒软件哪个好 桌面提醒怎么设置
有很多人在工作的时候,都会用到各种各样的辅助工具,为了提醒自己的未来计划安排,不少人都想找一款好用的提醒工具软件。在寻找这类软件的时候,网上的推荐是一个不错的参考。网上推荐的提醒工具软件哪款好?我平时..2023-08-23信用卡贷是哪个平台(一个叫信用卡贷的平台)
信用卡贷一般是指使用信用卡贷款,很多平台和银行都推出了这样的业务。比如在网上平台办理借款时需要提交个人信用卡账单,不过在贷款时..2023-08-23