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或者数组保存这些数据即可。
相关文章推荐
- 完美实现Android ListView中的TextView的跑马灯效果
- android上改变listView的选中颜色
- 配置View桌面时找不到域的解决方法
- Delphi7中Listview的常用功能汇总
- Delphi控件ListView的属性及使用方法详解
- android中ListView数据刷新时的同步方法
- Android提高之ListView实现自适应表格的方法
- Android中实现水平滑动(横向滑动)ListView示例
- C#实现ListView选中项向上或向下移动的方法
- Listview加载的性能优化是如何实现的
- C#实现listview Group收缩扩展的方法
- C# listview添加combobox到单元格的实现代码
- ListView 百分比进度条(delphi版)
- Android listview多视图嵌套多视图
- ListView Adapter优化 实例
- Android用ListView显示SDCard文件列表的小例子
- Adapter实现ListView带多选框等状态的自定义控件的注意事项
- asp.net ListView 数据绑定
- Android之ScrollView嵌套ListView和GridView冲突的解决方法
- android ListView和ProgressBar(进度条控件)的使用方法