当前位置:首页 > 生活百科

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

栏目:生活百科日期:2025-03-18浏览:0

前言

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

如何分组?

为了使用分组,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.3import QtQuick.Window 2.2Window {    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: "美国" }    }

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

“qt listview详细用法(qml中listview的嵌套)” 的相关文章

python访问数据库语句(python连接数据库的方法)

数据分析离不开数据库,如何使用python连接数据库呢?听我娓娓道来哈该笔记参考了PyMySQL官方文档和《python数据采集》关于数据存储的部分,欢迎大家去...

天猫标题怎么优化,天猫宝贝标题优化技巧

淘宝标题优化时要注意什么?淘宝标题优化技巧上期店来店往小编给大家讲了”如何优化宝贝标题”,小伙伴们有木有针对性的去看看自己的宝贝标题是否合理呢,好的标题会促进搜...

华为p30和p30pro区别对比(究竟哪款更能深得你心呢)

3月26日,华为的旗舰机P系列在巴黎发布。其中的P30Pro以112分的成绩又一次刷新了DxOMark榜单,成为新一代的拍照神器。今天疑似P30系列国行版本的价...

mongodb分布式部署(mongodb三种部署方式)

实战:基于MongoDB文件服务器本节,我们将介绍如何基于MongoDB技术来存储二进制文件,从而实现一个文件服务器MongoDBFileServer。文件服务...

如何注册网站域名(手把手教你注册网站域名)

“域名”是Internet的中央服务。作为可以将域名和IP地址相互映射的分布式数据库,它使人们可以更轻松地访问Internet,而不必记住可以直接由机器读取的I...

上市公司独董离职潮苗头初显(但还没有那么夸张)

又有多家上市公司出现独立董事辞职。一晚上5家A股公司独董辞职截至晚间发稿,11月19日A股共有5家上市公司发布独董辞职公告,包括金花股份(600080)、科新发...

大疆无人机御pro使用教程(这款小型无人机外观精致续航

近年来小型无人机逐渐走进了消费级市场,如零度智控、Yuneec、曼塔智能S6等掌上无人机都获得了不错的市场反馈。这样小巧轻便的无人机降低了玩家的操作门槛,让更多...

分布式存储软件功能(ceph分布式存储优缺点)

Ceph简介Ceph存储集群至少需要1个CephMonitor和2个OSD守护进程。运行Ceph文件系统客户端时,则必须要有元数据服务器(MetadataSer...

人工智能企业有哪些(中国智能机器人企业排名)

如果说有一项技术彻底改变了21世纪,那一定是人工智能。Google新掌门人SundarPichai也曾说:“人工智能带给我们生活和工作的改变,甚至将超过火和电。...

10万元以下车型推荐,这四款车既省油价格又实惠

即便如今国内汽车消费水平提高了,但是,走量车型的预算范围依旧在10万块左右的车型,甚至10万块以下的车型为主。这是因为普通家庭的汽车消费水平,依旧还停留在这样一...