28、视图基类 QAbstractItemView---------Model/View模型视图

视图基类 QAbstractItemView

视图类是控制数据显示的,同样有一个纯虚类QAbstractitemView, 它的方法大家只做理解即可,不用死记硬背,后面我们会根据具体的子类和案例带着大家学会这些操作。

●设置和返回模型

cpp 复制代码
void setModel(QAbstractItemModel *model) //设置数据模型
QAbstractItemModel *model() //返回关联的数据模型对象指针
  • 获取选中的模型
cpp 复制代码
QItemSelectionModel *selectionModel() const;
  • 设置代理
cpp 复制代码
// 设置代理
void  setItemDelegate(QAbstractItemDelegate *delegate);
// 为某一列设置代理
void  setItemDelegateForColumn(int column, QAbstractItemDelegate *delegate)
// 为某一行设置代理
void  setItemDelegateForRow(int row, QAbstractItemDelegate *delegate)
  • 设置属性和获取属性
cpp 复制代码
void setEditTriggers(QAbstractItemView::EditTriggers triggers) 
QAbstractItemView::EditTriggers editTriggers() 

属性值的类型为该属性值是标志类型 QAbstractItemView::EditTriggers, 它可以是几种枚举类型的并集

cpp 复制代码
- NoEditTriggers:不允许编辑。
- CurrentChanged:当前项变化时进入编辑状态。
- DoubleClicked:双击一个项时进入编辑状态。
- SelectedClicked:点击一个已选择的项时进入编辑状态。
- EditKeyPressed:当平台的编辑按键被按下时进入编辑状态

视图组件类和模型类都没有 readonly 属性,如果要设置数据是只读的,用函数 setEditTriggers()

设置视图组件为不允许编辑即可。

  • 设置选择模式
cpp 复制代码
void  setSelectionMode(QAbstractItemView::SelectionMode mode);

选择模式包括以下

cpp 复制代码
SingleSelection:    单选,只能选择一个项,例如只能选择一个单元格。
ContiguousSelection:连续选择,例如按住 Shift 键选择多个连续单元格。
ExtendedSelection:  扩展选择,例如可以按住 Ctrl 键选择多个不连续的单元格。
MultiSelection:     多选,例如通过拖动鼠标选择多个单元格。
NoSelection:        不允许选择
  • 设置选择模式有时我们可以设置选择整行或者多行
cpp 复制代码
void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior)

选择模式包括

cpp 复制代码
QAbstractItemView::SelectItems:  选择任意单元格
QAbstractItemView::SelectRows:   整行选择
QAbstractItemView::SelectColumns: 整列选择
相关推荐
cvby7 小时前
C++11
开发语言·c++
6Hzlia7 小时前
【Classic 150 刷题计划】 LeetCode 26. 删除有序数组中的重复项 | C++ 快慢双指针经典模板
c++·算法·leetcode
夜不会漫长8 小时前
C++:类和对象(2)
java·javascript·c++
无小道8 小时前
C++ 中 `explicit` 关键字详解:彻底理解隐式类型转换
c++·explicit
蒸蒸yyyyzwd8 小时前
cpp 选手秋招学习笔记 day34
c++·八股
Tairitsu_H8 小时前
[C++] C++11类和STL的新特性
开发语言·c++·stl·c++11
Lucis__8 小时前
基于责任链模式的消息队列—异步处理流水线的最佳实践
linux·c++·消息队列·责任链模式·ipc
Jackson_GJH9 小时前
C++虚函数、虚继承、虚基类
c++·c++基础
码匠许师傅10 小时前
【C++三方组件】开篇总论:为什么需要以及如何选型?
开发语言·c++
h_a_o777oah10 小时前
【Games101】C++ 软光追:光线追踪的求交逻辑和 BVH 提效实现及代码实现细节
c++·计算机图形学·光线追踪·games101·bvh·求交算法·软件渲染