您的位置:首页 > 其它

QML 中的视图

2016-04-13 12:47 190 查看

QML 中的视图

TableView
ListView
GridView
PathView
,这些 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
或者数组保存这些数据即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  QML View ListView