QItemSelectionModel 类
QItemSelectionModel 类用于跟踪视图中的选中项。 更多...
头文件 | #include <QItemSelectionModel> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
继承 | QObject |
公共类型
枚举 | SelectionFlag { NoUpdate, Clear, Select, Deselect, Toggle 等,... |
标志 | SelectionFlags |
属性
- selectedIndexes : const QModelIndexList
公共函数
QItemSelectionModel(QAbstractItemModel *model = nullptr) | |
QItemSelectionModel(QAbstractItemModel *model, QObject *parent) | |
virtual | ~QItemSelectionModel() |
bool | columnIntersectsSelection(int column, const QModelIndex &parent = QModelIndex()) const |
QModelIndex | currentIndex() const |
bool | hasSelection() const |
bool | isColumnSelected(int column, const QModelIndex &parent = QModelIndex()) const |
bool | isRowSelected(int row, const QModelIndex &parent = QModelIndex()) const |
bool | isSelected(const QModelIndex &index) const |
const QAbstractItemModel * | model() const |
QAbstractItemModel * | model() |
bool | rowIntersectsSelection(int row, const QModelIndex &parent = QModelIndex()) const |
QModelIndexList | selectedColumns(int row = 0) const |
QModelIndexList | selectedIndexes() const |
QModelIndexList | selectedRows(int column = 0) const |
const QItemSelection | selection() const |
void | setModel(QAbstractItemModel *model) |
公共槽
virtual void | clear() |
virtual void | clearCurrentIndex() |
void | clearSelection() |
virtual void | reset() |
virtual void | select(const QModelIndex &index, QItemSelectionModel::SelectionFlags command) |
virtual void | select(const QItemSelection &selection, 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) |
详细描述
QItemSelectionModel类负责跟踪视图中的选定项或几个相同模型上的视图中的选定项。它还跟踪视图中的当前选定项。
QItemSelectionModel类是模型/视图类之一,并构成Qt的模型/视图框架的一部分。
选定项使用范围存储。每当您想修改选定项时,请使用select()并提供QItemSelection或QModelIndex和QItemSelectionModel::SelectionFlag。
QItemSelectionModel采用双层方法进行选择管理,处理已提交的选定项和当前选择中的项。当前选定的项是当前交互式选择的一部分(例如,使用橡皮筋选择或键盘shift选择)。
要更新当前选定项,请使用QItemSelectionModel::Current和任何其他SelectionFlags的按位或。如果您省略QItemSelectionModel::Current命令,将创建新的当前选择,并将以前的添加到整个选择中。所有函数都操作在两层上;例如,selecteditems()将返回两层上的项。
注意:自5.5起,model、hasSelection和currentIndex是元对象属性。
另请参阅模型/视图编程和QAbstractItemModel。
成员类型文档
enum QItemSelectionModel::SelectionFlag
flags QItemSelectionModel::SelectionFlags
此枚举描述了选择模型将被更新的方式。
常量 | 值 | 描述 |
---|---|---|
QItemSelectionModel::NoUpdate | 0x0000 | 不会进行选择。 |
QItemSelectionModel::Clear | 0x0001 | 将清除完整选择。 |
QItemSelectionModel::Select | 0x0002 | 将选择所有指定的索引。 |
QItemSelectionModel::Deselect | 0x0004 | 将取消选择所有指定的索引。 |
QItemSelectionModel::Toggle | 0x0008 | 将根据其当前状态选择或取消选择所有指定的索引。 |
QItemSelectionModel::Current | 0x0010 | 将更新当前选择。 |
QItemSelectionModel::Rows | 0x0020 | 将展开所有索引以跨越行。 |
QItemSelectionModel::Columns | 0x0040 | 将展开所有索引以跨越列。 |
QItemSelectionModel::SelectCurrent | 选择 | 当前 | 选择和当前的组合,便于使用。 |
QItemSelectionModel::ToggleCurrent | 切换 | 当前 | 切换和当前的组合,便于使用。 |
QItemSelectionModel::ClearAndSelect | 清除 | 选择 | 清除和选择的组合,便于使用。 |
SelectionFlags 类型是 QFlags<SelectionFlag> 的 typedef。它存储了 SelectionFlag 值的或组合。
属性文档
[只读]
selectedIndexes : const QModelIndexList
访问函数
QModelIndexList | selectedIndexes() const |
通知器信号
void | selectionChanged(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
如果在给定 parent 的 column 中有选择的项目,则返回 true
。
注意:从 Qt 5.15 开始,parent 的默认参数为一个空的模型索引。
注意:此函数可以通过元对象系统从 QML 触发。请参阅 Q_INVOKABLE。
[信号]
void QItemSelectionModel::currentChanged(const QModelIndex ¤t, const QModelIndex &previous)
此信号在当前项更改时发出。原来的模型项索引由 current 索引替换,成为选择项的当前项。
请注意,当项目模型重置时,此信号不会被发出。
另请参阅currentIndex(),setCurrentIndex() 和 selectionChanged()。
[信号]
void QItemSelectionModel::currentColumnChanged(const QModelIndex ¤t, const QModelIndex &previous)
如果当前项更改且其列与旧当前项的列不同,则发出此信号。
请注意,当项目模型重置时,此信号不会被发出。
另请参阅currentChanged(),currentRowChanged(),currentIndex() 和 setCurrentIndex()。
QModelIndex QItemSelectionModel::currentIndex() const
返回当前项的模型项索引,如果没有当前项则返回无效索引。
另请参阅setCurrentIndex()。
[信号]
void QItemSelectionModel::currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous)
如果当前项改变且其行与上一当前项的行不同,则发出此信号。
请注意,当项目模型重置时,此信号不会被发出。
另请参阅currentChanged(),currentColumnChanged(),currentIndex() 和 setCurrentIndex()。
[保护]
void QItemSelectionModel::emitSelectionChanged(const QItemSelection &newSelection, const QItemSelection &oldSelection)
比较两个选择 newSelection 和 oldSelection,并使用已取消选择和选择的项目发出 selectionChanged()。
bool QItemSelectionModel::hasSelection() const
如果选择模型包含任何选定的项,则返回 true
,否则返回 false
。
[可调用]
bool QItemSelectionModel::isColumnSelected(int column, const QModelIndex &parent = QModelIndex()) const
如果给定 parent 的 column 中所有项都被选中,则返回 true
。
请注意,此函数通常比在相同列的所有项上调用 isSelected() 更快,且不可选项目被忽略。
注意:从 Qt 5.15 开始,parent 的默认参数为一个空的模型索引。
注意:此函数可以通过元对象系统从 QML 触发。请参阅 Q_INVOKABLE。
[可调用]
bool QItemSelectionModel::isRowSelected(int row, const QModelIndex &parent = QModelIndex()) const
如果给定 parent 的 row 中的所有项目都被选中,则返回 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。
[虚拟槽]
void QItemSelectionModel::reset()
清除选择模型。不发出任何信号。
[虚拟槽]
bool QItemSelectionModel::rowIntersectsSelection(int row, const QModelIndex &parent = QModelIndex()) const
如果给定 parent 的 row 中有任何选中的项,则返回 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公司有限的商标。所有其他商标均为其各自所有者的财产。