Qt For Android 数据模型
2016-02-14 14:17
363 查看
Qt For Android 数据模型
Model/View 结构Model-View-Controller(MVC), 是从Smalltalk发展而来的一种设计模式,常被用于构建用户界面。
经典设计模式的著作中有这样的描述:
MVC 由三种对象组成。Model 是应用程序对象,View是它的屏幕表示,Controller定义了用户界面如何对用户输入进行响应。
在 MVC 之前,用户界面设计倾向于三者揉合在一起,MVC对它们进行了解耦,提高了灵活性与重用性。
假如把 view 与 controller 结合在一起,结果就是 model/view 结构。这个结构依然是把数据存储与数据表示进行了分离,它与 MVC 都基于同样的思想,但它更简单一些。这种分离使得在几个不同的 view 上显示同一个数据成为可能,也可以重新实现新的 view,而不必改变底层的数据结构。为了更灵活的对用户输入进行处理,引入了 delegate 这个概念。它的好处是,数据项的渲染与编程可以进行定制。
摘自 Qt Model/View( 一)
其他文章:
Qt的Model/View (二)
QML 数据模型接口
QML 中的数据模型接口有ListModel,以及由
C++中重写后注册到
QML运行环境的
QAbstractItemModel或者
QAbstractListModel。
QML 中的视图类有
ListView,
GridView以及
PathView。
这里取最常用的
ListView作为例子:
[code]ListView { anchors.fill: parent model: fruitModel delegate: Row { Text { text: "Fruit: " + name } Text { text: "Cost: $" + cost } } ListModel { id: fruitModel ListElement { name: "Apple" cost: 2.45 } ListElement { name: "Orange" cost: 3.25 } ListElement { name: "Banana" cost: 1.95 } } }
回到
ListModel本身,有如下常用的方法:
[code]append(jsobject dict) clear() object get(int index) insert(int index, jsobject dict) move(int from, int to, int n) remove(int index, int count) set(int index, jsobject dict) setProperty(int index, string property, variant value) sync()
ListModel本身可以很好地和
JSON交互,并且支持多线程异步操作,但是没有提供排序的接口。
QAbstractListModel
继承QAbstractItemModel或者
QAbstractListModel,重写一些虚函数,然后注册到
QML的运行环境中,就可以获取到强大的支持。例如提供持久化数据,排序,统计等一些与业务相关的接口。
继承
QAbstractListModel并重写如下三个虚函数。
[code]int rowCount(const QModelIndex &parent) const; QVariant data(const QModelIndex &index, int role) const; QHash<int, QByteArray> roleNames() const;
本文章来自本人的 github 项目 A-week-to-develop-android-app-plan
相关文章推荐
- Qt For Android 数据库操作
- Qt For Android 文件存储
- Android——Animation笔记:布局动画
- Android 模仿QQ抢红包 listView实现
- Android 动画之TranslateAnimation应用详解
- Volley学习笔记
- ANDROID_MARS学习笔记_S01原始版_009_SQLite
- Android 动画之AlphaAnimation应用详解
- android studio 获取sha1和md5值
- Android 动画之ScaleAnimation应用详解
- 恭喜发财! -- 手把手教你仿造一个qq下拉抢红包 Android自定义view
- 恭喜发财! -- 手把手教你仿造一个qq下拉抢红包 Android自定义view
- Android开发涉及到的设计模式
- Android RotateAnimation详解
- Android辅助功能AccessibilityService与抢红包辅助
- Android 带有可滑动效果的用户引导页slidingtutorial-android
- Android Studio学习之零碎的操作和知识点
- 阅读android源码时,问自己几个为什么?
- Android动画效果translate、scale、alpha、rotate详解
- android WebView解析 调用html5页面