有时,链表的数据需要分组。例如使用首字母来划分联系人,或者分类音乐。使用链表视图可以把平面列表按类别划分。
为了使用分组,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: "美国" } }
即会出现多个相同的属性名,运行效果如下:
Google已经为Windows、Mac和Linux用户发布了Chrome 99.0.4844.84,以解决一个在外部被利用的高严重性零日漏洞。浏览器供应商在周五发布的安全公告中说:”Google已经得知CVE-2022-1096的一个漏洞存在于外部。” 99.0.4844.84版本已经在稳定的桌...
以色列似乎正在从一场大规模的网络攻击中恢复过来。据Haaretz和Kan的Amichai Stein报道,攻击者在周一晚上攻陷了几个以色列政府网站,其中包括卫生部、内政部、司法部和福利部网站。总理办公室的网站也受到了影响。以色列国家网络管理局在一份声明中称,现在所有的网站都已重新上线。 虽然以色列政...
由周四发布的“网络垃圾”(Webspam)报告可知,谷歌搜索在 2021 年过滤的垃圾网站数量、竟是 2020 年的六倍。据悉,作为 Alphabet 旗下子公司,Google 有一套名为 SpamBrian 的人工智能垃圾过滤系统,并且可在超过 99% 情况下实现“不受垃圾所困扰”(spam-fr...
一项新的调查显示,70%成年人仍在使用同一个密码做一件以上事情。在对1041名18岁或以上美国居民的调查中,PCMag发现,25%的人承认有时会重复使用同一个密码,24%的人说他们大部分时间都这样做,而21%的人承认一直这样做。 重复使用密码是黑客喜欢的事情,尤其是许多网站和服务使用电子邮件地址作为...
SushiSwap 首席技术官表示,该公司的 MISO 平台近日受到了软件供应链的攻击。SushiSwap 是一个社区驱动的去中心化金融(DeFi)平台,方便用户交换、赚取、借出、借用和利用加密货币资产。今年早些时候,Sushi 的最新产品 Minimal Initial SushiSwap Off...
上周三,Evina的一位法国网络安全专家Maxime Ingrao发现,在Play Store最热门的新免费应用程序中,有一些恶意软件窃取了Facebook凭证和其他一些数据。他公开了自己的发现,并在Twitter上上传了详细版本。 这名研究人员在安装一个应用程序时偶然发现了该恶意软件,当该应用程...