视图基类 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: 整列选择