Qt MVC学习 模型子类化参考(二)
2015-07-20 22:00
363 查看
可变大小模型
所有种类的模型都支持行的插入和删除。表格模型和层次模型还支持列的插入和删除。在模型的维度发生改变之前和之后,让其他的组件意识到这种变化是很重要的。所以,可以通过实现以下这些方法来改变模型的大小,但是这些方法的实现必须保证调用合适的方法来使与模型相关的视图和委托意识到变化:
insertRows():用来给所有类型的模型添加新行和新的数据项。该方法的实现必须在向任何底层数据结构插入新行之前调用beginInsertRows()方法,并且在插入完成后立即调用endInsertRows()方法。
removeRows():用来删除任何模型包含的行和数据项。该方法的实现必须在从任何底层数据结构删除行之前调用beginRemoveRows()方法,并且在删除完成后立即调用endRemoveRows()方法。
insertColumns():用来给表格模型或层次模型添加新列和新的数据项。该方法的实现必须在向任何底层数据结构插入新行之前调用beginInsertColumns()方法,并且在插入完成后立即调用endInsertColumns()方法。
removeColumns():用来删除表格模型或层次模型包含的行和数据项。该方法的实现必须在从任何底层数据结构删除行之前调用beginRemoveColumns()方法,并且在删除完成后立即调用endRemoveColumns()方法。
一般地,这些方法在成功执行之后应该返回true。然而在一些情况下,这些行为可能只成功了一部分;比如,能够被插入的行数比指定的行数要少。在这种情况下,模型应当返回false来宣布失败,从而使能任何相关的组件来处理这种情况。
改变大小的API的实现过程中调用的方法所发射的信号会给与模型相关联的组件一个在任何数据变得不可用之前采取行动的机会。带有开始和结束方法的插入和删除方法的封装也使得模型能够正确处理长期模型索引。
一般情况下,开始和结束方法能够把该模型的底层数据结构的变化通知给其他的部件。但是对于比较复杂的数据结构的变化而言,比如数据的内部重组或者排序,应当发射layoutChanged()信号来使得任何视图获得更新。
模型数据的懒加载
模型数据的懒加载有效地允许有关模型信息的请求被拖延到视图真正需要它的时候才发送。
有些模型需要从远程数据库中获得数据,或者由于数据的组织方式的原因,在获取数据时必须进行非常耗时的操作。为了精确地显示模型数据,视图一般会尽可能多地请求数据,限制返回给他们的信息量从而减少不必要的数据跟进的请求是非常有用的。
所有种类的模型都支持行的插入和删除。表格模型和层次模型还支持列的插入和删除。在模型的维度发生改变之前和之后,让其他的组件意识到这种变化是很重要的。所以,可以通过实现以下这些方法来改变模型的大小,但是这些方法的实现必须保证调用合适的方法来使与模型相关的视图和委托意识到变化:
insertRows():用来给所有类型的模型添加新行和新的数据项。该方法的实现必须在向任何底层数据结构插入新行之前调用beginInsertRows()方法,并且在插入完成后立即调用endInsertRows()方法。
removeRows():用来删除任何模型包含的行和数据项。该方法的实现必须在从任何底层数据结构删除行之前调用beginRemoveRows()方法,并且在删除完成后立即调用endRemoveRows()方法。
insertColumns():用来给表格模型或层次模型添加新列和新的数据项。该方法的实现必须在向任何底层数据结构插入新行之前调用beginInsertColumns()方法,并且在插入完成后立即调用endInsertColumns()方法。
removeColumns():用来删除表格模型或层次模型包含的行和数据项。该方法的实现必须在从任何底层数据结构删除行之前调用beginRemoveColumns()方法,并且在删除完成后立即调用endRemoveColumns()方法。
一般地,这些方法在成功执行之后应该返回true。然而在一些情况下,这些行为可能只成功了一部分;比如,能够被插入的行数比指定的行数要少。在这种情况下,模型应当返回false来宣布失败,从而使能任何相关的组件来处理这种情况。
改变大小的API的实现过程中调用的方法所发射的信号会给与模型相关联的组件一个在任何数据变得不可用之前采取行动的机会。带有开始和结束方法的插入和删除方法的封装也使得模型能够正确处理长期模型索引。
一般情况下,开始和结束方法能够把该模型的底层数据结构的变化通知给其他的部件。但是对于比较复杂的数据结构的变化而言,比如数据的内部重组或者排序,应当发射layoutChanged()信号来使得任何视图获得更新。
模型数据的懒加载
模型数据的懒加载有效地允许有关模型信息的请求被拖延到视图真正需要它的时候才发送。
有些模型需要从远程数据库中获得数据,或者由于数据的组织方式的原因,在获取数据时必须进行非常耗时的操作。为了精确地显示模型数据,视图一般会尽可能多地请求数据,限制返回给他们的信息量从而减少不必要的数据跟进的请求是非常有用的。
相关文章推荐
- Qt中show()与exec()
- PyQt之QHBoxLayout、QVBoxLayout 与QGridLayout
- Qt Creator中,include路径包含过程(或如何找到对应的头文件)
- QT获取网页内容
- PyQt的安装和使用案例
- Qt的一些基础知识
- QT中QWidget、QDialog及QMainWindow的区别
- qt线程动态回调被调类中的函数
- Qt学习之一,键盘事件细节
- QT 的信号与槽机制介绍
- 为qt添加sql驱动
- PyQt的Layout的比例化分块。
- QT中PRO文件写法
- ubuntu13.04下安装Qt5.5.0
- Qt自带的自动打包dll工具使用方法
- Qt5该插件机制(7)--插件开发演示示例代码(Lower-level API)
- Qt浅谈之三十系统托盘(QSystemTrayIcon)
- Ubuntu下创建QT桌面快捷方式
- QTP 中class 类的应用(二)
- QT中控制台程序运行问题