模型视图(20):【类】QItemSelectionModel[官翻]
作者:互联网
文章目录
QItemSelectionModel 类
QItemSelectionModel类跟踪视图的选中项。
Header: | #include < QItemSelectionModel> |
---|---|
qmake: | QT += core |
Inherits: | QObject |
Inherited By: |
详述
QItemSelectionModel跟踪一个视图或同一模型的多个视图中选定的项目。它还跟踪视图中当前选定的项。
QItemSelectionModel类是一个模型/视图类,是Qt模型/视图框架的一部分。
使用范围存储所选项。每当你想要修改选中的项目时,使用select()并提供QItemSelection,或者QModelIndex和QItemSelectionModel::SelectionFlag。
QItemSelectionModel采用两层方法进行选择管理,既处理已提交的选定项,也处理作为当前选择的一部分的选定项。当前选中的项目是当前交互选择的一部分(例如,使用橡皮带选择或键盘shift选择)。
要更新当前选中的项目,使用QItemSelectionModel::Current的位OR和其他任何SelectionFlags。如果省略QItemSelectionModel::Current命令,将创建一个新的当前选择,之前的选择将添加到整个选择中。所有的功能都在这两层上操作;例如,selecteditems()将返回来自两个层的项目。
注意:从5.5开始,model、hasSelection和currentIndex都是元对象属性。
公共类型
enum SelectionFlag
flags SelectionFlags
这个枚举描述了更新选择模型的方式。
Constant | Value | Description |
---|---|---|
NoUpdate | 0x0000 | 不进行任何选择。 |
Clear | 0x0001 | 完整的选择将被清除。 |
Select | 0x0002 | 将选择所有指定的索引。 |
Deselect | 0x0004 | 所有指定的索引将被取消。 |
Toggle | 0x0008 | 所有指定的索引将根据其当前状态被选中或取消选中。 |
Current | 0x0010 | 当前的选择将被更新。 |
Rows | 0x0020 | 所有索引都将扩展为跨行。 |
Columns | 0x0040 | 所有索引都将扩展为跨列。 |
SelectCurrent | Select | Current | 选择和当前的组合,提供了方便。 |
ToggleCurrent | Toggle | Current | 一种切换和当前的组合,提供了方便。 |
ClearAndSelect | Clear | Select | 明确和选择的结合,提供了方便。 |
属性
- selectedIndexes : const QModelIndexList
QModelIndexList selectedIndexes() const
公共函数
构造析构
- QItemSelectionModel(QAbstractItemModel *model, QObject *parent)
- QItemSelectionModel(QAbstractItemModel *model = nullptr)
- virtual ~QItemSelectionModel()
交互
- bool columnIntersectsSelection(int column, const QModelIndex &parent = QModelIndex()) const
是否在具有给定父节点的列中有选定项
注意:从Qt 5.15开始,parent的默认参数是一个空的模型索引。
注意:这个函数可以通过元对象系统调用,也可以从QML调用。看到Q_INVOKABLE。 - bool rowIntersectsSelection(int row, const QModelIndex &parent = QModelIndex()) const
是否在具有给定父节点的行中有选定项
模型和索引
- const QAbstractItemModel * model() const
- QAbstractItemModel * model()
- void setModel(QAbstractItemModel *model)
- QModelIndex currentIndex() const
选定
- bool hasSelection() const 是否有选择范围
- const QItemSelection selection() const 返回存储在选择模型中的选择范围
- bool isColumnSelected(int column, const QModelIndex &parent = QModelIndex()) const
是否在具有给定父元素的列中选择了所有项
请注意,这个函数通常比对同一列中的所有项调用isSelected()要快,而且不可选择的项将被忽略。
注意:从Qt 5.15开始,parent的默认参数是一个空的模型索引。 - bool isRowSelected(int row, const QModelIndex &parent = QModelIndex()) const
是否在具有给定父元素的行中选择了所有项 - bool isSelected(const QModelIndex &index) const 是否在给定的索引被选定
- QModelIndexList selectedColumns(int row = 0) const
返回给定行中所有行都已选中的列的索引 - QModelIndexList selectedRows(int column = 0) const
返回给定列中所有行都已选中的行的索引 - QModelIndexList selectedIndexes() const
返回所有选中的模型项索引的列表。该列表不包含重复项,且未排序
公共槽
- virtual void clear()
- virtual void clearCurrentIndex()
- void clearSelection()
- virtual void reset()
- virtual void select(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command)
- virtual void select(const QModelIndex &index, QItemSelectionModel::SelectionFlags command)
- virtual void setCurrentIndex(const QModelIndex &index, QItemSelectionModel::SelectionFlags command)
信号
- void currentChanged(const QModelIndex ¤t, const QModelIndex &previous)
- void currentColumnChanged(const QModelIndex ¤t, const QModelIndex &previous)
- void currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous)
- void modelChanged(QAbstractItemModel *model)
- void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
受保护的函数
- void emitSelectionChanged(const QItemSelection &newSelection, const QItemSelection &oldSelection)
参见
- 模型/视图编程
- QAbstractItemModel
- 图表示例
标签:20,索引,void,视图,选择,官翻,const,QItemSelectionModel,QModelIndex 来源: https://blog.csdn.net/hitzsf/article/details/112424492