qt listview详细用法(qml中listview的嵌套)

前言

有时,链表的数据需要分组。例如使用首字母来划分联系人,或者分类音乐。使用链表视图可以把平面列表按类别划分。

如何分组?

为了使用分组,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: "俄罗斯" }     } }

运行效果如下:

qt listview详细用法(qml中listview的嵌套)-1

如果同一组下的内容不联系,如下面的代码所示:

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: "美国" }     }

即会出现多个相同的属性名,运行效果如下:

qt listview详细用法(qml中listview的嵌套)-2

秒鲨号所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈!本站将在三个工作日内改正。
(0)

大家都在看

  • java 计时器怎么用(java实现定时器的方式)

    Java在1.3版本引入了Timer工具类,它是一个古老的定时器,搭配TimerTask和TaskQueue一起使用。从Java5开始在并发包中引入了另一个定时器Scheduled…

    2022年2月26日
  • 移动降低套餐怎么办理(移动套餐怎么从高改低)

    在日常生活中,你是不是经常遇到这样的情况:中国移动,经常以优惠活动的理由,给你打电话邀请你参加,问你要不要办理? 在某些活动确实比较优惠的时候,很多人也都接受了中国移动的邀请,参加…

    2022年4月2日 投稿
  • 有什么好用的桌面日历(桌面日历软件推荐)

    文/雷哥 编辑/美琪 大家好,我是雷哥。 今天给大家推荐一款桌面日历+时间管理神器 —— 优效日历。 01 软件简介 优效日历是一款具有 Win10简约、时尚风格的免费桌面日历软件…

    2022年2月22日 投稿
  • 家用车排行榜(7座汽车大全 家用)

    随着消费升级,越来越多的家庭将视线转向豪华家用,这也就是为何BBA销量年年递增的原因,因为在中国消费者心中,BBA就是豪华的代表。 但其实,在海外市场,特别是更为成熟的美国市场,他…

    2022年6月6日 投稿
  • 最好用的拖把是哪种(最好用的拖把是哪一种)

    又快到年底了,众位家庭都面临大扫除的时候,而拖地是我们日常一定对做的事情 但有没有发现有时候有些拖把要是难用了真的会是打扫卫生的负担! 我想大家为了能够让打扫卫生的过程便捷起来,尝…

    2022年6月10日 投稿
  • 特色小吃加盟排行榜(最新小吃加盟店排行榜)

    7月2日,在“2019中国餐饮营销力峰会暨中国餐饮(品类)十大品牌颁奖盛典”上, “2019中国餐饮(品类)十大品牌” 正式揭晓。近年来表现火热、潜力巨大的小吃品类再次受到关注。 …

    2022年6月10日 投稿
  • prado是什么车多少钱(丰田霸道prado多少钱)

    导读:新款“霸道”要凉了?2022款霸道曝光,不足40万配起CVT+宝马引擎 随着当下汽车市场的火爆,汽车不仅为人们的出行带来了方便,而且随着需求的不同,衍生出多样化的车型,比如S…

    2022年3月9日 投稿
  • 美国平均寿命(美国人平均寿命多少岁)

    据新华社消息,美国疾病控制和预防中心(CDC)21日发布的报告显示,美国2020年人均预期寿命为77岁4个月,较上一年缩短1.5岁,降幅创第二次世界大战以来最高纪录。少数族裔情况更…

    2022年5月31日
  • 演讲汇报时,如何克服紧张?

    演讲汇报时,如何克服紧张? 王堃阳口才前线:专注演讲口才20年,学演说找王堃阳,给我一分钟让世界听见您的声音! 很多人在报告或演讲时,或许准备了精彩又丰富的内容,但因为上台看到人群…

    2022年3月18日
  • c#串口通信(opencv入门教程)

    串口进行操作的类,其中包括写和读操作,类可设置串口参数、设置接收函数、打开串口资源、关闭串口资源,操作完成后,一定要关闭串口、接收串口数据事件、接收数据出错事件、获取当前全部串口、…

    2022年2月27日
品牌推广 在线咨询
返回顶部