QML 中的视图

QML 中的视图

TableViewListViewGridViewPathView,这些 View 会对视图进行优化,也就是当可见项(数据展示项)在看不到的地方就会销毁,这也是 View 为何可以显示无限个的数据展示项(硬盘为上限,每个数据展示项不能太大,一次能显示的数据展示项个数在合理范围)。

先看看如下代码:

ListView {
    model: 1000000 // 这里表示有一百万个数据
    delegate: Text {text: index}    // 显示数据
}

你会发现,如果真的要渲染一百万个 Text,机身内存是吃不消的,所以在显示上会做优化,也就是看不到的数据展示项,就不创建,当数据展示项超出视图时,就会被销毁。

在看看如下代码:

ListView {
    model: 1000000 // 这里表示有一百万个数据
    delegate: CheckBox { }
}

这里显示了一百万个 CheckBox,每个 CheckBox 都可以保存自己的被选中的状态 checkable。但是就如上面所说的,数据展示项在超出可见范围就会被销毁。也就是数据展示项本身如果保存了数据,在销毁前没有保存的话,就会丢失。

所以解决的办法也很简单,另外构建一个数组,按照顺序保存这些 CheckBox 的状态值。

具体项目代码可以查看 ImageExplorer/ImageExplorerPage.qml 第 89 行,以及第 139 行和 143 行。

由于相册显示使用了 GridView,如果每个图片展示项(数据展示项)都放一个 CheckBox 那么,数据展示项超出视图时,就会被销毁。也就不能保存你选择了哪些图片。所以构建一个 ListModel 或者数组保存这些数据即可。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值