一, 前言
今天我开始进入QT的第二学习阶段,就是重构控件。以前都是用标准控件,之前简单学习了事件机制及paint重绘相关,那么就有了自定义控件的基础。我选择比较常见的需要重写的Widget开始,就是从自定义itemmodel开始练习,至于显示可以通过Treeview,Tableview等。
二, 需求
通过表单形式显示xml,可编辑并保存xml。参考QT Example工程来实现。
PS:本来想自己在example基础上修改下来实现的,再想想好像我自己的工具没有这样的功能,一般都是读写数据库的。只有导出xml和导入xml格式,可以理解为把数据库信息以xml格式保存,以及xml数据写入数据库。
所以本次需求改成仅分析QT Example,学习设计方法。
三,遇到的问题
1. 关于重建model要重写哪些方法?
答:由于我想用QtableView显示所以模型可以基于QAbstractTableModel来自定义模型,官网help关于这块有了介绍,必须要实现4个函数。还有一个简单方法就是QT新建工程后,add new文件选自定义item模型即可,就在add new资源文件的上面。就会创建出模板。而基于QAbstractItemModel则更加复杂。
2. 自定义QAbstractItemModel类中data和index函数功能
答:我理解他们2个一个是创建数据(index),一个是获取数据(data)。所以模型要对称。data有一路index传参返回QVariant内容。要实现可编辑数据库则需要重写setdata功能。
3. 如何构建数据模型
答:参考simpletreemodel中的setupModelData可以受到启发。仅看simpledommodel不行,因为它直接用QDomDocument来进行内容构造,应该也是在new model的时候构造的。针对data显示及编辑保存都按需写代码即可。
四,小结
本次仅理论学习,掌握自定义itemModel的方法。