QAbstractProxyModel Class
QAbstractProxyModel 类为可执行排序、过滤或其他数据处理任务的代理项目模型提供了一个基类。更多
Header: | #include <QAbstractProxyModel> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
继承: | QAbstractItemModel |
继承于 | QIdentityProxyModel,QSortFilterProxyModel, 以及QTransposeProxyModel |
属性
- sourceModel : QAbstractItemModel*
公共函数
QAbstractProxyModel(QObject *parent = nullptr) | |
virtual | ~QAbstractProxyModel() |
QBindable<QAbstractItemModel *> | bindableSourceModel() |
virtual QModelIndex | mapFromSource(const QModelIndex &sourceIndex) const = 0 |
virtual QItemSelection | mapSelectionFromSource(const QItemSelection &sourceSelection) const |
virtual QItemSelection | mapSelectionToSource(const QItemSelection &proxySelection) const |
virtual QModelIndex | mapToSource(const QModelIndex &proxyIndex) const = 0 |
virtual void | setSourceModel(QAbstractItemModel *sourceModel) |
QAbstractItemModel * | sourceModel() const |
重新实现的公共函数
virtual QModelIndex | buddy(const QModelIndex &index) const override |
virtual bool | canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const override |
virtual bool | canFetchMore(const QModelIndex &parent) const override |
(since 6.0) virtual bool | clearItemData(const QModelIndex &index) override |
virtual QVariant | data(const QModelIndex &proxyIndex, int role = Qt::DisplayRole) const override |
virtual bool | dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override |
virtual void | fetchMore(const QModelIndex &parent) override |
virtual Qt::ItemFlags | flags(const QModelIndex &index) const override |
virtual bool | hasChildren(const QModelIndex &parent = QModelIndex()) const override |
virtual QVariant | headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override |
virtual QMap<int, QVariant> | itemData(const QModelIndex &proxyIndex) const override |
virtual QMimeData * | mimeData(const QModelIndexList &indexes) const override |
virtual QStringList | mimeTypes() const override |
virtual void | revert() override |
virtual QHash<int, QByteArray> | roleNames() const override |
virtual bool | setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override |
virtual bool | setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole) override |
virtual bool | setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles) override |
virtual QModelIndex | sibling(int row, int column, const QModelIndex &idx) const override |
virtual void | sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override |
virtual QSize | span(const QModelIndex &index) const override |
virtual bool | submit() override |
virtual Qt::DropActions | supportedDragActions() const override |
virtual Qt::DropActions | supportedDropActions() const override |
信号
void | sourceModelChanged() |
受保护函数
(since 6.2) QModelIndex | createSourceIndex(int row, int col, void *internalPtr) const |
详细说明
该类定义了代理模型必须使用的标准接口,以便与其他模型/视图组件正确互操作。它不应该被直接实例化。
所有标准代理模型都源自 QAbstractProxyModel 类。如果您需要创建一个新的代理模型类,通常最好是子类化一个现有的类,该类提供的行为与您要提供的行为最为接近。
从源模型中过滤或排序数据项的代理模型应通过使用或子类化QSortFilterProxyModel 来创建。
要子类化 QAbstractProxyModel,您需要实现mapFromSource() 和mapToSource() 。只有在需要不同于默认行为的行为时,才需要重新实现mapSelectionFromSource() 和mapSelectionToSource() 函数。
注意: 如果删除了源模型或没有指定源模型,代理模型将在空的占位符模型上运行。
另请参阅 QSortFilterProxyModel,QAbstractItemModel, 以及模型/视图编程。
属性文档
[bindable]
sourceModel : QAbstractItemModel*
注意: 该属性支持QProperty 绑定。
此属性保存此代理模型的源模型。
访问功能:
QAbstractItemModel * | sourceModel() const |
virtual void | setSourceModel(QAbstractItemModel *sourceModel) |
Notifier 信号:
void | sourceModelChanged() | [see note below] |
注意: 这是一个私有信号。它可在信号连接中使用,但不能由用户发出。
成员函数文档
[explicit]
QAbstractProxyModel::QAbstractProxyModel(QObject *parent = nullptr)
用给定的parent 构建代理模型。
[virtual noexcept]
QAbstractProxyModel::~QAbstractProxyModel()
销毁代理模型。
[override virtual]
QModelIndex QAbstractProxyModel::buddy(const QModelIndex &index) const
重实现:QAbstractItemModel::buddy(const QModelIndex &index) const.
[override virtual]
bool QAbstractProxyModel::canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const
重实现:QAbstractItemModel::canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const.
[override virtual]
bool QAbstractProxyModel::canFetchMore(const QModelIndex &parent) const
重实现:QAbstractItemModel::canFetchMore(const QModelIndex &parent) const.
[override virtual, since 6.0]
bool QAbstractProxyModel::clearItemData(const QModelIndex &index)
重实现:QAbstractItemModel::clearItemData(const QModelIndex &index).
此函数在 Qt 6.0 中引入。
[protected, since 6.2]
QModelIndex QAbstractProxyModel::createSourceIndex(int row, int col, void *internalPtr) const
相当于在源模型上调用 createIndex。
如果您的代理模型想保持源模型中项的父子关系,该方法就很有用。在重新实现mapToSource() 时,可以调用此方法为源模型的行row 和列col 创建索引。
一个典型的用法是,在重新实现mapFromSource() 时,在代理索引中保存来自源模型的内部指针,在重新实现mapToSource() 时,使用与internalPtr 相同的内部指针来恢复原始源索引。
此函数在 Qt 6.2 中引入。
[override virtual]
QVariant QAbstractProxyModel::data(const QModelIndex &proxyIndex, int role = Qt::DisplayRole) const
重实现:QAbstractItemModel::data(const QModelIndex &index, int role) const.
另请参阅 setData().
[override virtual]
bool QAbstractProxyModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
重实现:QAbstractItemModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent).
[override virtual]
void QAbstractProxyModel::fetchMore(const QModelIndex &parent)
重实现:QAbstractItemModel::fetchMore(const QModelIndex &parent).
[override virtual]
Qt::ItemFlags QAbstractProxyModel::flags(const QModelIndex &index) const
重实现:QAbstractItemModel::flags(const QModelIndex &index) const.
[override virtual]
bool QAbstractProxyModel::hasChildren(const QModelIndex &parent = QModelIndex()) const
重实现:QAbstractItemModel::hasChildren(const QModelIndex &parent) const.
[override virtual]
QVariant QAbstractProxyModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const
重实现:QAbstractItemModel::headerData(int section, Qt::Orientation orientation, int role) const.
另请参阅 setHeaderData().
[override virtual]
QMap<int, QVariant> QAbstractProxyModel::itemData(const QModelIndex &proxyIndex) const
重实现:QAbstractItemModel::itemData(const QModelIndex &index) const。
另请参阅 setItemData().
[pure virtual invokable]
QModelIndex QAbstractProxyModel::mapFromSource(const QModelIndex &sourceIndex) const
重新实现此函数可返回代理模型中与源模型sourceIndex 相对应的模型索引。
注: 可通过元对象系统和 QML 调用此函数。参见Q_INVOKABLE 。
另请参阅 mapToSource() 。
[virtual invokable]
QItemSelection QAbstractProxyModel::mapSelectionFromSource(const QItemSelection &sourceSelection) const
返回从指定sourceSelection 映射的代理选择。
重新实现此方法可将源选择映射到代理选择。
注: 可通过元对象系统和 QML 调用此函数。请参阅Q_INVOKABLE 。
[virtual invokable]
QItemSelection QAbstractProxyModel::mapSelectionToSource(const QItemSelection &proxySelection) const
返回从指定proxySelection 映射的源选择。
重新实现此方法可将代理选择映射为源选择。
注: 可通过元对象系统和 QML 调用此函数。请参阅Q_INVOKABLE 。
[pure virtual invokable]
QModelIndex QAbstractProxyModel::mapToSource(const QModelIndex &proxyIndex) const
重新实现此函数可返回源模型中与代理模型中proxyIndex 相对应的模型索引。
注: 可通过元对象系统和 QML 调用此函数。参见Q_INVOKABLE 。
另请参阅 mapFromSource() 。
[override virtual]
QMimeData *QAbstractProxyModel::mimeData(const QModelIndexList &indexes) const
重实现:QAbstractItemModel::mimeData(const QModelIndexList &indexes) const.
[override virtual]
QStringList QAbstractProxyModel::mimeTypes() const
重实现:QAbstractItemModel::mimeTypes() const.
[override virtual]
void QAbstractProxyModel::revert()
重新实现:QAbstractItemModel::revert().
[override virtual]
QHash<int, QByteArray> QAbstractProxyModel::roleNames() const
重实现:QAbstractItemModel::roleNames() const.
[override virtual]
bool QAbstractProxyModel::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)
重实现:QAbstractItemModel::setData(const QModelIndex &index, const QVariant &value, int role)。
另请参阅 data().
[override virtual]
bool QAbstractProxyModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole)
重实现:QAbstractItemModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role)。
另请参阅 headerData().
[override virtual]
bool QAbstractProxyModel::setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles)
重实现:QAbstractItemModel::setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles)。
另请参阅 itemData().
[virtual]
void QAbstractProxyModel::setSourceModel(QAbstractItemModel *sourceModel)
设置要由代理模型处理的给定sourceModel 。
子类应在方法开始时调用beginResetModel() ,断开与旧模型的连接,调用此方法,连接到新模型,然后调用endResetModel() 。
注: 属性sourceModel 的设置函数。
另请参阅 sourceModel() 。
[override virtual]
QModelIndex QAbstractProxyModel::sibling(int row, int column, const QModelIndex &idx) const
重实现:QAbstractItemModel::sibling(int row, int column, const QModelIndex &index) const.
[override virtual]
void QAbstractProxyModel::sort(int column, Qt::SortOrder order = Qt::AscendingOrder)
重实现:QAbstractItemModel::sort(int column, Qt::SortOrder order)。
QAbstractItemModel *QAbstractProxyModel::sourceModel() const
返回包含可通过代理模型获取的数据的模型。
注: 属性 sourceModel 的获取函数。
另请参阅 setSourceModel().
[override virtual]
QSize QAbstractProxyModel::span(const QModelIndex &index) const
重实现:QAbstractItemModel::span(const QModelIndex &index) const.
[override virtual]
bool QAbstractProxyModel::submit()
重新实现:QAbstractItemModel::submit().
[override virtual]
Qt::DropActions QAbstractProxyModel::supportedDragActions() const
重实现:QAbstractItemModel::supportedDragActions() const.
[override virtual]
Qt::DropActions QAbstractProxyModel::supportedDropActions() const
重实现:QAbstractItemModel::supportedDropActions() const.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.