本书以Visual C++ 6.0开发环境为基础,全面、细致地讲解了使用Visual C++语言进行编程和实际项目开发的各种技术,是学习Visual C++编程的必备图书。全书分两大部分、共27章,其中,第一部分为开发技术,主要...
类QTreeWidget在其内部定义了一个具有树状层次结构的模型,并以树状外观显示这个模型。虽然显示出来的外观和QTreeView的类似,但是程序员并不需要自己创建模型对象,因而使用起来更加方便。使用QTreeWidget时,模...
类QListWidget在其内部定义了一个具有列表结构的模型,并以列表形式显示其中的数据项。列表中的每个数据项被表示为类QListWidgetItem的一个对象。在列表视图中所要显示的数据被存放在每个数据项的角色DisplayRol...
本章前面几个节在使用Model/View框架时,模型对象和视图对象是相互独立的。我们可以直接定义一个模型对象(比如类QStandardIteModel或者其他便利模型类的对象),或者派生QAbstractListModel、QAbstractTableMod...
前一节介绍了如何直接派生QAbstractProxyModel的子类,以将源模型中的数据集映射为另外一个虚拟的数据集。这种方法虽然足够灵活,但是需要程序员实现两个数据集索引的映射,并且需要重载多个接口函数。如果这种映...
QAbstractProxyModel是一个抽象类,程序员不能直接定义该类的对象,而是应该派生该类的子类,实现对其他模型的代理。该类在其内部定义了一个指针,指向被代理的模型。我们将派生的子类称为代理模型(proxy mode...
有些情况下,应用程序需要对模型中的数据集做一些处理之后,再交给视图对象显示。例如,一位人事部经理在使用一个电子邮件处理程序时,需要在过去几年接收的成千上万封求职信中,寻找一份曾经被拒、但是目前急需...
Qt的Model/View框架中,委托类负责显示数据项,创建与管理编辑器对象,以对数据项进行编辑。具体地说,在显示一个模型对象中的数据项时,虽然视图对象负责绘制总体结构(比如树状层次结构、标头等),但是它不会...
Qt的Model/View框架允许多个视图对象显示同一个模型类对象中的数据集,这样,用户可以在不同的视图对象中查看数据集中不同部分的数据项。在这种情形下,用户往往希望在某个视图对象中选择了一些数据项之后,其他...
视图类将多个数据项呈现给用户后,用户常常会选择其中一些数据项,并要求应用程序对这些数据项施加某种操作。这种情形下,应用程序应该能够查询到哪些数据项被选中了。每个视图对象包含一个QItemSelectionModel对...
视图类允许用户使用键盘或者鼠标选择某个或者某些数据项。视图类提供三种选择模式:(1)单选模式。用户最多只能选择一个数据项。(2)多选模式。用户可以选择多个数据项。图13 16显示了一个具有8行、4列的数据...
在Qt的Model/View框架中,视图类在总体上负责绘制视图,处理用户的交互命令。对于含有较多数据项的视图,用户可以使用滚动条浏览到所有的数据项。对于具有树状层级结构的数据集,视图对象可以折叠/展开其中每个父...
对于一些特殊的数据集,Qt的Model/View框架提供了专门的模型类来处理它们。这些模型类虽然也是QAbstractItemModel的派生类,但是它们的使用方式非常简单,根本不需要程序员派生任何新的模型类,因此,我们将它们...
类QabstractItemModel,QabstractListModel,QAbstractTableModel不保存数据,用户需要从这些类派生出子类,并在子类中定义某种数据结构来保存数据。与此不同,类QStandardItemModel负责保存数据,每个数据项被表...
选择合适的基类:QAbstractItemModel最灵活、复杂。QAbstractListModel and QAbstractTableModel简单,已经实现了一些功能,取决于数据本身的结构。1.最小模型访问接口类QAbstractItemModel定义了模型访问接口...
在Qt的模型/视图框架中,模型类的使用者(比如视图类、委托类)每次只能访问数据集中的一个数据项。这些类总是通过一个索引来指定将要访问哪个数据项。为简单起见,本节仅以视图类为例,来说明如何使用该索引访问...
模型中的一个数据项会存放多个数据子项,其中一些是应用程序本身需要处理的数据,另外一些是Model/View框架中其他部分(比如视图对象、委托对象等)需要处理的。我们将一个数据子项所起的作用称为它的角色(role...
依据数据项之间的关系,模型具有如图13 6所示的三种拓扑结构:(1)列表模型(List Model)。各数据项相互独立,组成一个线形的序列。比如,一个班级所有学生的姓名就组成一个列表,每个数据项就是一名学生的姓...
Model/View框架中,所有模型类具有共同的抽象基类QAbstractItemModel,所有视图类具有共同的抽象基类QAbstractItemView,所有委托类具有共同的抽象基类QabstractItem Delegate。这些类之间的协作关系如图13-4所...
具有图形用户界面的应用程序常需要使用一些控件来显示程序中的数据,或者接收用户输入的数据。一种设计策略是令控件既负责存储程序中的数据,又负责显示或者编辑这些数据。这种策略虽然简单、直观,但是难以复用...