Qt | 深入了解 Qt 的视图类
前言:
视图是用来将模型中的数据项展示到界面上的。QAbstractItemView 提供了一个标准的视图接口,以及使用了模型索引提供了一种通用的方法来表示数据。视图通常管理从模型获取的数据的整体布局,它们可以自己渲染独立的数据项,也可以使用委托来处理渲染和编辑。
视图除了显示数据,还可以处理项目间的导航,以及项目的选择行为等。支持选择单个项目(QAbstractItemView::SelectItems)、只选择行(QAbstractItemView::SelectRows)、只选择列(QAbstractItemView::SelectColumns)。
对于一些视图,如 QTableView 和 QTreeView,在显示项目的同时还可以显示标头。这是通过 QHeaderView 类实现的,它们使用 QAbstractItemModel::headerData()函数从模型中获取数据,然后使用一个标签显示标头信息。
Qt 中已经提供了一些线程的视图:QListView、QTableView、QTreeView。这三个都是使用规范的格式来显示数据的,如果想要实现条形图或者饼图等特殊的显示方式,就需要重新实现视图类了。
处理项目选择:
在视图中被选择的项目的信息存储在一个 QItemSelectionModel 实例中。
视图中总有一个当前项目和一个被选择项目。在同一时间,一个项目可以既是当前项目,也是被选择项目。当前项目和被选择项目的区别:
只能有一个当前项目。但是可以有多个被选择项目;
使用键盘导航或者鼠标按键可以切换当前项目。项目是否处于被选择状态取决于冀哥预先定义好的模式,例如:单项选择、多项选择等;
按下 F2 键或者双击数百哦都可以编辑当前项目。当前项目可以通过指定一个范围来一起被使用;
当前项目会显示焦点矩形。被选择项目会使用选择矩形来表示。
视图的使用:
视图可以理解为一个部件,可以显示在界面中。
版权声明: 本文为 InfoQ 作者【YOLO.】的原创文章。
原文链接:【http://xie.infoq.cn/article/24eb9213485b193df1926af23】。未经作者许可,禁止转载。
评论