QItemSelectionModel 类

QItemSelectionModel 类用于跟踪视图中的选中项。 更多...

头文件 #include <QItemSelectionModel>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core
继承 QObject

公共类型

枚举SelectionFlag { NoUpdate, Clear, Select, Deselect, Toggle 等,...
标志SelectionFlags

属性

公共函数

QItemSelectionModel(QAbstractItemModel *model = nullptr)
QItemSelectionModel(QAbstractItemModel *model, QObject *parent)
virtual~QItemSelectionModel()
boolcolumnIntersectsSelection(int column, const QModelIndex &parent = QModelIndex()) const
QModelIndexcurrentIndex() const
boolhasSelection() const
boolisColumnSelected(int column, const QModelIndex &parent = QModelIndex()) const
boolisRowSelected(int row, const QModelIndex &parent = QModelIndex()) const
boolisSelected(const QModelIndex &index) const
const QAbstractItemModel *model() const
QAbstractItemModel *model()
boolrowIntersectsSelection(int row, const QModelIndex &parent = QModelIndex()) const
QModelIndexListselectedColumns(int row = 0) const
QModelIndexListselectedIndexes() const
QModelIndexListselectedRows(int column = 0) const
const QItemSelectionselection() const
voidsetModel(QAbstractItemModel *model)

公共槽

virtual voidclear()
virtual voidclearCurrentIndex()
voidclearSelection()
virtual voidreset()
virtual voidselect(const QModelIndex &index, QItemSelectionModel::SelectionFlags command)
virtual voidselect(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command)
virtual voidsetCurrentIndex(const QModelIndex &index, QItemSelectionModel::SelectionFlags command)

信号

voidcurrentChanged(const QModelIndex &current, const QModelIndex &previous)
voidcurrentColumnChanged(const QModelIndex &current, const QModelIndex &previous)
voidcurrentRowChanged(const QModelIndex &current, const QModelIndex &previous)
voidmodelChanged(QAbstractItemModel *model)
voidselectionChanged(const QItemSelection &selected, const QItemSelection &deselected)

受保护函数

voidemitSelectionChanged(const QItemSelection &newSelection, const QItemSelection &oldSelection)

详细描述

QItemSelectionModel类负责跟踪视图中的选定项或几个相同模型上的视图中的选定项。它还跟踪视图中的当前选定项。

QItemSelectionModel类是模型/视图类之一,并构成Qt的模型/视图框架的一部分。

选定项使用范围存储。每当您想修改选定项时,请使用select()并提供QItemSelectionQModelIndexQItemSelectionModel::SelectionFlag

QItemSelectionModel采用双层方法进行选择管理,处理已提交的选定项和当前选择中的项。当前选定的项是当前交互式选择的一部分(例如,使用橡皮筋选择或键盘shift选择)。

要更新当前选定项,请使用QItemSelectionModel::Current和任何其他SelectionFlags的按位或。如果您省略QItemSelectionModel::Current命令,将创建新的当前选择,并将以前的添加到整个选择中。所有函数都操作在两层上;例如,selecteditems()将返回两层上的项。

注意:自5.5起,modelhasSelectioncurrentIndex是元对象属性。

另请参阅模型/视图编程QAbstractItemModel

成员类型文档

enum QItemSelectionModel::SelectionFlag
flags QItemSelectionModel::SelectionFlags

此枚举描述了选择模型将被更新的方式。

常量描述
QItemSelectionModel::NoUpdate0x0000不会进行选择。
QItemSelectionModel::Clear0x0001将清除完整选择。
QItemSelectionModel::Select0x0002将选择所有指定的索引。
QItemSelectionModel::Deselect0x0004将取消选择所有指定的索引。
QItemSelectionModel::Toggle0x0008将根据其当前状态选择或取消选择所有指定的索引。
QItemSelectionModel::Current0x0010将更新当前选择。
QItemSelectionModel::Rows0x0020将展开所有索引以跨越行。
QItemSelectionModel::Columns0x0040将展开所有索引以跨越列。
QItemSelectionModel::SelectCurrent选择 | 当前选择和当前的组合,便于使用。
QItemSelectionModel::ToggleCurrent切换 | 当前切换和当前的组合,便于使用。
QItemSelectionModel::ClearAndSelect清除 | 选择清除和选择的组合,便于使用。

SelectionFlags 类型是 QFlags<SelectionFlag> 的 typedef。它存储了 SelectionFlag 值的或组合。

属性文档

[只读] selectedIndexes : const QModelIndexList

访问函数

QModelIndexListselectedIndexes() const

通知器信号

voidselectionChanged(const QItemSelection &selected, const QItemSelection &deselected)

成员函数文档

[显式] QItemSelectionModel::QItemSelectionModel(QAbstractItemModel *model = nullptr)

构建一个操作指定项目 model 的选择模型。

[显式] QItemSelectionModel::QItemSelectionModel(QAbstractItemModel *model, QObject *parent)

构建一个操作指定项目 model 的选择模型,并带有 parent

[虚函数 noexcept] QItemSelectionModel::~QItemSelectionModel()

销毁选择模型。

[虚槽] void QItemSelectionModel::clear()

清除选择模型。触发 selectionChanged() 和 currentChanged()。

[虚槽] void QItemSelectionModel::clearCurrentIndex()

清除当前索引。触发 currentChanged()。

[槽] void QItemSelectionModel::clearSelection()

清除选择模型中的选择。触发 selectionChanged()。

[可调用] bool QItemSelectionModel::columnIntersectsSelection(int column, const QModelIndex &parent = QModelIndex()) const

如果在给定 parentcolumn 中有选择的项目,则返回 true

注意:从 Qt 5.15 开始,parent 的默认参数为一个空的模型索引。

注意:此函数可以通过元对象系统从 QML 触发。请参阅 Q_INVOKABLE

[信号] void QItemSelectionModel::currentChanged(const QModelIndex &current, const QModelIndex &previous)

此信号在当前项更改时发出。原来的模型项索引由 current 索引替换,成为选择项的当前项。

请注意,当项目模型重置时,此信号不会被发出。

另请参阅currentIndex(),setCurrentIndex() 和 selectionChanged()。

[信号] void QItemSelectionModel::currentColumnChanged(const QModelIndex &current, const QModelIndex &previous)

如果当前项更改且其列与旧当前项的列不同,则发出此信号。

请注意,当项目模型重置时,此信号不会被发出。

另请参阅currentChanged(),currentRowChanged(),currentIndex() 和 setCurrentIndex()。

QModelIndex QItemSelectionModel::currentIndex() const

返回当前项的模型项索引,如果没有当前项则返回无效索引。

另请参阅setCurrentIndex()。

[信号] void QItemSelectionModel::currentRowChanged(const QModelIndex &current, const QModelIndex &previous)

如果当前项改变且其行与上一当前项的行不同,则发出此信号。

请注意,当项目模型重置时,此信号不会被发出。

另请参阅currentChanged(),currentColumnChanged(),currentIndex() 和 setCurrentIndex()。

[保护] void QItemSelectionModel::emitSelectionChanged(const QItemSelection &newSelection, const QItemSelection &oldSelection)

比较两个选择 newSelectionoldSelection,并使用已取消选择和选择的项目发出 selectionChanged()。

bool QItemSelectionModel::hasSelection() const

如果选择模型包含任何选定的项,则返回 true,否则返回 false

[可调用] bool QItemSelectionModel::isColumnSelected(int column, const QModelIndex &parent = QModelIndex()) const

如果给定 parentcolumn 中所有项都被选中,则返回 true

请注意,此函数通常比在相同列的所有项上调用 isSelected() 更快,且不可选项目被忽略。

注意:从 Qt 5.15 开始,parent 的默认参数为一个空的模型索引。

注意:此函数可以通过元对象系统从 QML 触发。请参阅 Q_INVOKABLE

[可调用] bool QItemSelectionModel::isRowSelected(int row, const QModelIndex &parent = QModelIndex()) const

如果给定 parentrow 中的所有项目都被选中,则返回 true

请注意,此函数通常比在相同行的所有项上调用 isSelected() 更快,且不可选项目被忽略。

注意:从 Qt 5.15 开始,parent 的默认参数为一个空的模型索引。

注意:此函数可以通过元对象系统从 QML 触发。请参阅 Q_INVOKABLE

[可调用] bool QItemSelectionModel::isSelected(const QModelIndex &index) const

如果给定的模型项 index 被选中,则返回 true

注意:此函数可以通过元对象系统从 QML 触发。请参阅 Q_INVOKABLE

const QAbstractItemModel *QItemSelectionModel::model() const

返回由选择模型操作的项目模型。

另请参阅 setModel().

QAbstractItemModel *QItemSelectionModel::model()

返回由选择模型操作的项目模型。

[信号] void QItemSelectionModel::modelChanged(QAbstractItemModel *model)

设置模型成功时发出此信号,使用 setModel

另请参阅 model() 和 setModel().

[虚拟槽] void QItemSelectionModel::reset()

清除选择模型。不发出任何信号。

[虚拟槽] bool QItemSelectionModel::rowIntersectsSelection(int row, const QModelIndex &parent = QModelIndex()) const

如果给定 parentrow 中有任何选中的项,则返回 true

注意:从 Qt 5.15 开始,parent 的默认参数为一个空的模型索引。

注意:此函数可以通过元对象系统从 QML 触发。请参阅 Q_INVOKABLE

[虚拟槽] void QItemSelectionModel::select(const QModelIndex &index, QItemSelectionModel::SelectionFlags command)

使用指定的 command 选中模型项 index,并发出 selectionChanged

另请参阅 QItemSelectionModel::SelectionFlags.

[虚拟槽] void QItemSelectionModel::select(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command)

使用指定的 command 选中项 selection,并发出 selectionChanged

另请参阅QItemSelectionModel::SelectionFlag.

[可调用的] QModelIndexList QItemSelectionModel::selectedColumns(int row = 0) const

返回给定中所有行都选中的列的索引。

注意:此函数可以通过元对象系统从 QML 触发。请参阅 Q_INVOKABLE

另请参阅selectedIndexes() 和 selectedRows().

QModelIndexList QItemSelectionModel::selectedIndexes() const

返回所有选中模型项索引的列表。列表中不含重复项,且未排序。

注意:getter函数用于selectedIndexes属性。

[可调用的] QModelIndexList QItemSelectionModel::selectedRows(int column = 0) const

返回给定中所有列都选中的行的索引。

注意:此函数可以通过元对象系统从 QML 触发。请参阅 Q_INVOKABLE

另请参阅selectedIndexes() 和 selectedColumns().

const QItemSelection QItemSelectionModel::selection() const

返回存储在选定模型中的选定范围。

[信号] void QItemSelectionModel::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)

该信号在selection更改时发出。更改的selection被表示为选中的items和未选中的items的项目选择。

请注意当前index更改与选择独立。还请注意,当item模型被重置时,该信号不会发出。

那些保持选中但更改其index的项目不包含在< i translate="no">selected和deselected中。因此,在只有选中项目的索引发生更改的情况下,可能会同时发出包含空< i translate="no">selected和< i translate="no">deselected的信号。

注意:selectedIndexes属性的notifier信号。

另请参阅select() 和 currentChanged().

[虚拟槽] void QItemSelectionModel::setCurrentIndex(const QModelIndex &index, QItemSelectionModel::SelectionFlags command)

设置模型项index为当前项,并发出currentChanged(). 当前项目用于键盘导航和焦点指示;它与任何选定的项无关,即使选定的项也可以是当前项。

根据指定的command,index也可成为当前选择的一部分。

另请参阅currentIndex() 和 select().

void QItemSelectionModel::setModel(QAbstractItemModel *model)

将模型设置为model。将发出modelChanged()信号。

另请参阅 model() 和 modelChanged

© 2024 Qt公司有限公司。此处包含的文档贡献的知识产权归其各自的拥有者所有。提供的文档受到由自由软件基金会发布的《GNU自由文档许可证》第1.3版本的许可,许可证详情请访问 http://www.gnu.org/licenses/fdl.html。Qt及其相关标志是芬兰及其其他国家的Qt公司有限的商标。所有其他商标均为其各自所有者的财产。