Qt学习之路(45): 自定义model之一】的更多相关文章

前面我们说了Qt提供的几个预定义model.但是,面对变化万千的需求,那几个model是远远不能满足我们的需要的.另外,对于Qt这种框架来说,model的选择首先要能满足绝大多数功能的需要,这就是说,可能这个model中的某些功能你永远也不会用到,但是还要带着它,这样做的后果就是效率不会很高.所以,我们还必须要能够自定义model.   在我们真正的完成自定义model之前,先来看看在Qt的model-view架构中的几个关键的概念.一个model中的每个数据元素都有一个model索引.这个索引…
http://devbean.blog.51cto.com/448512/d-8/p-2…
尽管 Qt 已经提供了很多事件,但对于更加千变万化的需求来说,有限的事件都是不够的.例如,我要支持一种新的设备,这个设备提供一种崭新的交互方式,那么,这种事件如何处理呢?所以,允许创建自己的事件 类型也就势在必行.即便是不说那种非常极端的例子,在多线程的程序中,自定义事件也是尤其有用.当然,事件也并不是局限在多线程中,它可以用在单线程的程序中,作为一种对象间通讯的机制.那么,为什么我需要使用事件,而不是信号槽呢?主要原因是,事件的分发既可以是同步的,又可以是异步的,而函数的调用或者说是槽的回调总…
前面的例子都是使用的系统提供的拖放对象 QMimeData 进行拖放数据的存储,比如使用 QMimeData::setText() 创建文本,使用 QMimeData::urls() 创建 URL 对象.但是,如果你希望使用一些自定义的对象作为拖放数据,比如自定义类等等,单纯使用 QMimeData 可能就没有那么容易了.为了实现这种操作,我们可以从下面三种实现方式中选择一个: 将自定义数据作为 QByteArray 对象,使用 QMimeData::setData() 函数作为二进制数据存储到…
Qt 学习之路 2(53):自定义拖放数据 豆子  2013年5月26日  Qt 学习之路 2  13条评论上一章中,我们的例子使用系统提供的拖放对象QMimeData进行拖放数据的存储.比如使用QMimeData::setText()创建文本,使用QMimeData::urls()创建 URL 对象等.但是,如果你希望使用一些自定义的对象作为拖放数据,比如自定义类等等,单纯使用QMimeData可能就没有那么容易了.为了实现这种操作,我们可以从下面三种实现方式中选择一个: 将自定义数据作为QB…
Home / Qt 学习之路 2 / Qt 学习之路 2(50):自定义可编辑模型 Qt 学习之路 2(50):自定义可编辑模型 豆子 2013年5月13日 Qt 学习之路 2 13条评论 上一章我们了解了如何自定义只读模型.顾名思义,只读模型只能够用于展示只读数据,用户不能对其进行修改.如果允许用户修改数据,则应该提供可编辑的模型.可编辑模型与只读模型非常相似,至少在展示数据方面几乎是完全一样的,所不同的是可编辑模型需要提供用户编辑数据后,应当如何将数据保存到实际存储值中. 我们还是利用上一章…
Qt 学习之路 2(49):自定义只读模型 豆子 2013年5月5日 Qt 学习之路 2 18条评论 model/view 模型将数据与视图分割开来,也就是说,我们可以为不同的视图,QListView.QTableView和QTreeView提供一个数据模型,这样我们可以从不同角度来展示数据的方方面面.但是,面对变化万千的需求,Qt 预定义的几个模型是远远不能满足需要的.因此,我们还必须自定义模型. 类似QAbstractView类之于自定义视图,QAbstractItemModel 为自定义模…
Home / Qt 学习之路 2 / Qt 学习之路 2(45):模型 Qt 学习之路 2(45):模型  豆子  2013年2月26日  Qt 学习之路 2  23条评论 在前面两章的基础之上,我们将开始介绍 model 的通用概念. 在 model/view 架构中,model 提供一种标准接口,供视图和委托访问数据.在 Qt 中,这个接口由QAbstractItemModel类进行定义.不管底层数据是如何存储的,只要是QAbstractItemModel的子类,都提供一种表格形式的层次结构…
Qt 学习之路 2(41):model/view 架构 豆子 2013年1月23日 Qt 学习之路 2 50条评论 有时,我们的系统需要显示大量数据,比如从数据库中读取数据,以自己的方式显示在自己的应用程序的界面中.早期的 Qt 要实现这个功能,需要定义一个组件,在这个组件中保存一个数据对象,比如一个列表.我们对这个列表进行查找.插入等的操作,或者把修改的地方写回,然后刷新组件进行显示.这个思路很简单,也很清晰,但是对于大型程序,这种设计就显得苍白无力.比如,在一个大型系统中,你的数据可能很大,…
Home / Qt 学习之路 2 / Qt 学习之路 2(5):自定义信号槽 Qt 学习之路 2(5):自定义信号槽  豆子  2012年8月24日  Qt 学习之路 2  131条评论 上一节我们详细分析了connect()函数.使用connect()可以让我们连接系统提供的信号和槽.但是,Qt 的信号槽机制并不仅仅是使用系统提供的那部分,还会允许我们自己设计自己的信号和槽.这也是 Qt 框架的设计思路之一,用于我们设计解耦的程序.本节将讲解如何在自己的程序中自定义信号槽. 信号槽不是 GUI…