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: 整列选择
相关推荐
楼田莉子3 小时前
CMake学习:CMake在静态库工程场景上应用
开发语言·c++·后端·学习·软件构建
不想看见4043 小时前
C++/Qt 使用 Tushare 获取股票信息
c++·qt·信息可视化
Qt程序员3 小时前
深入理解 Linux 内核 RCU 机制:从原理到实现
linux·c++·内核·linux内核·rcu
吴梓穆3 小时前
UE5 c++打印日志
开发语言·c++·ue5
吴梓穆3 小时前
UE5 C++ 绘制图形调试宏
开发语言·c++·ue5
2501_908329853 小时前
C++中的装饰器模式
开发语言·c++·算法
x***r1513 小时前
Dev C++ 6.5安装与配置教程 Windows版:解压+管理员运行+自定义路径+中文设置指南
开发语言·c++
楚Y6同学3 小时前
为什么 C++ 要设计函数重载
开发语言·c++