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

   2023-04-16 互联网0
核心提示:前言 有时,链表的数据需要分组。例如使用首字母来划分联系人,或者分类音乐。使用链表视图可以把平面列表按类别划分。 如何分组? 为了使用分组,section.property与section.criteria必须设置。section.prop

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

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

 
标签: 嵌套 俄罗斯 美国
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与爱美生活网(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 菲诗小铺二合一睫毛膏怎么样(睫毛膏睫毛纤长嵌)
    菲诗小铺二合一睫毛膏怎么样(睫毛膏睫毛纤长嵌
    入手新玩具,THE FACE SHOP菲诗小铺二合一纤长卷翘睫毛膏。普通睫毛膏刷头一般较大,因此在使用时很难顾及所有睫毛,特别是下睫毛以及眼皮上隐藏的细小睫毛,在涂抹时一不小心还会将睫毛膏沾到眼皮上。菲诗小铺二合一纤长卷翘睫毛膏一大一小两把
  • 小说中嵌套了布吕诺船长的故事,有什么作用
    小说中嵌套了布吕诺船长的故事,有什么作用
    小说中嵌套了布吕诺船长的故事作用是揭开了驱动思特里克兰德做出各种令人惊讶的举止的一些真相,让思特里克兰德着迷的是创作欲,他想热切的创造出美,这种激情让他不能平静下来,逼着他不断的东奔西走,为了能够达到这个目的,他将生活的基础打翻,其实在整个
    05-22
点击排行