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: 整列选择
相关推荐
Quz15 分钟前
QML SpinBox 基础与步长控制:可编辑输入与自定义步长
qt
Darkwanderor31 分钟前
Linux系统编程实战项目:模拟实现shell
linux·c++
himobrinehacken1 小时前
揭秘Windows程序启动的神秘之旅
c++·安全
库玛西2 小时前
C++ 运行时多态 :核心总结与原理图解
c语言·c++·笔记
隐积2 小时前
Qt魔法之旅 · 全系列课程导航
qt
Byron Loong3 小时前
【C++】重定向是什么
开发语言·c++
hansang_IR3 小时前
【题解】LC:Z 算法(Z Algorithm)
c++·算法·字符串
霍霍的袁5 小时前
【C++】模板从入门到进阶(函数模板 + 类模板 + 特化 + 分离编译)
开发语言·c++·visual studio
海清河晏1115 小时前
Qt 实战:信号与槽+事件系统
开发语言·c++·qt
hansang_IR5 小时前
【题解】LC:卷积(Convolution (Mod 1,000,000,007))
c++·算法·ntt·crt