QAbstractProxyModel 类

QAbstractProxyModel 类提供了一个基类,用于实现可以进行排序、过滤或其他数据处理的代理项模型。 更多信息...

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

QIdentityProxyModelQSortFilterProxyModelQTransposeProxyModel

特性

公开函数

QAbstractProxyModel(QObject *parent = nullptr)
virtual~QAbstractProxyModel()
QBindable<QAbstractItemModel *>bindableSourceModel()
virtual QModelIndexmapFromSource(const QModelIndex &sourceIndex) const = 0
virtual QItemSelectionmapSelectionFromSource(const QItemSelection &sourceSelection) const
virtual QItemSelectionmapSelectionToSource(const QItemSelection &proxySelection) const
virtual QModelIndexmapToSource(const QModelIndex &proxyIndex) const = 0
virtual voidsetSourceModel(QAbstractItemModel *sourceModel)
QAbstractItemModel *sourceModel() const

重写的公共函数

virtual QModelIndexbuddy(const QModelIndex &index) const override
virtual boolcanDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const override
virtual boolcanFetchMore(const QModelIndex &parent) const override
(since 6.0) virtual boolclearItemData(const QModelIndex &index) override
virtual QVariantdata(const QModelIndex &proxyIndex, int role = Qt::DisplayRole) const override
virtual booldropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
virtual voidfetchMore(const QModelIndex &parent) override
virtual Qt::ItemFlagsflags(const QModelIndex &index) const override
virtual boolhasChildren(const QModelIndex &;《i>parent = QModelIndex()) const override
virtual QVariantheaderData(int 《i>section,Qt::Orientation 《i>orientation,int 《i>role = Qt::DisplayRole) const override
virtual QMap<int,QVariant>itemData(const QModelIndex &;《i>proxyIndex) const override
virtual QMimeData *mimeData(const QModelIndexList &;《i>indexes) const override
virtual QStringListmimeTypes() const override
virtual voidrevert() override
virtual QHash<int,QByteArray>roleNames() const override
virtual boolsetData(const QModelIndex &;《i>index,const QVariant &;《i>value,int 《i>role = Qt::EditRole) override
virtual boolsetHeaderData(int 《i>section,Qt::Orientation 《i>orientation,const QVariant &;《i>value,int 《i>role = Qt::EditRole) override
virtual boolsetItemData(const QModelIndex &;《i>index,const QMap<int,QVariant> &;《i>roles) override
virtual QModelIndexsibling(int 《i>row,int 《i>column,const QModelIndex &;《i>idx) const override
virtual voidsort(int 《i>column,Qt::SortOrder 《i>order = Qt::AscendingOrder) override
virtual QSizespan(const QModelIndex &;《i>index) const override
virtual boolsubmit() override
virtual Qt::DropActionssupportedDragActions() const override
virtual Qt::DropActionssupportedDropActions() const override

信号

受保护函数

(自 6.2) QModelIndexcreateSourceIndex(int 《i>row,int 《i>col,void *《i>internalPtr) const

详细描述

此类定义了代理模型必须使用标准接口才能与其他模型/视图组件正确交互。它不应直接实例化。

所有标准代理模型都继承自 QAbstractProxyModel 类。如果您需要创建新的代理模型类,通常更好的方法是扩展一个现有的类,该类提供与您想要提供的行为最接近的行为。

应通过使用或扩展 QSortFilterProxyModel 来创建或扩展过滤或排序源模型数据项的代理模型。

要扩展 QAbstractProxyModel,您需要实现 mapFromSource() 和 mapToSource()。只有您需要不同于默认行为的行为时,才需要重新实现 mapSelectionFromSource() 和 mapSelectionToSource() 函数。

注意:如果源模型被删除或未指定源模型,则代理模型在空占位符模型上操作。

另请参阅:QSortFilterProxyModelQAbstractItemModel 以及 模型/视图编程

属性文档

[可绑定] sourceModel : QAbstractItemModel*

注意:此属性支持 QProperty 绑定。

此属性包含此代理模型源模型。

成员函数文档

[明确] QAbstractProxyModel::QAbstractProxyModel(QObject *parent = nullptr)

构造一个具有指定 parent 的代理模型。

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

销毁代理模型。

[重写虚函数] QModelIndex QAbstractProxyModel::buddy(const QModelIndex &index) const

重写: QAbstractItemModel::buddy(const QModelIndex &index) const.

[重写虚函数] 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.

[重写虚函数] bool QAbstractProxyModel::canFetchMore(const QModelIndex &parent) const

重写: QAbstractItemModel::canFetchMore(const QModelIndex &parent) const.

[重写虚函数,自 6.0 版本起] bool QAbstractProxyModel::clearItemData(const QModelIndex &index)

重写: QAbstractItemModel::clearItemData(const QModelIndex &index).

此函数自 Qt 6.0 版本起引入。

[保护,自 6.2 版本起] QModelIndex QAbstractProxyModel::createSourceIndex(int row, int col, void *internalPtr) const

等效于在源模型上调用 createIndex。

当代理模型希望保持源模型中项目父子关系时,此方法很有用。当重写 mapToSource() 时,您可以调用此方法为源模型的第 row 行和第 col 列创建索引。

典型用法是将源模型中传入的内部指针保存在代理索引中,并在重写 mapFromSource() 时使用相同的内部指针作为 internalPtr 来恢复原始源索引,当重写 mapToSource() 时。

此函数自 Qt 6.2 版本起引入。

[重写虚函数] QVariant QAbstractProxyModel::data(const QModelIndex &proxyIndex, int role = Qt::DisplayRole) const

重写: QAbstractItemModel::data(const QModelIndex &index, int role) const.

另请参阅setData().

[覆盖虚函数] 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).

[覆盖虚函数] void QAbstractProxyModel::fetchMore(const QModelIndex &parent)

重实现: QAbstractItemModel::fetchMore(const QModelIndex &parent).

[覆盖虚函数] Qt::ItemFlags QAbstractProxyModel::flags(const QModelIndex &index) const

重实现: QAbstractItemModel::flags(const QModelIndex &index) const.

[覆盖虚函数] bool QAbstractProxyModel::hasChildren(const QModelIndex &parent = QModelIndex()) const

重实现: QAbstractItemModel::hasChildren(const QModelIndex &parent) const.

[覆盖虚函数] QVariant QAbstractProxyModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const

重实现: QAbstractItemModel::headerData(int section, Qt::Orientation orientation, int role) const.

另请参阅setHeaderData().

[覆盖虚函数] QMap<int, QVariant> QAbstractProxyModel::itemData(const QModelIndex &proxyIndex) const

重实现: QAbstractItemModel::itemData(const QModelIndex &index) const.

另请参阅setItemData().

[纯虚函数调用] QModelIndex QAbstractProxyModel::mapFromSource(const QModelIndex &sourceIndex) const

重写此函数以返回代理模型中对应的 sourceIndex 的模型索引。

注意:这个函数可以通过元对象系统从 QML 中调用。请参阅 Q_INVOKABLE.

另请参阅mapToSource().

[虚函数调用] QItemSelection QAbstractProxyModel::mapSelectionFromSource(const QItemSelection &sourceSelection) const

返回从指定的 sourceSelection 映射的代理选择。

重新实现此方法以将源选择映射到代理选择。

注意:这个函数可以通过元对象系统从 QML 中调用。请参阅 Q_INVOKABLE.

[虚拟可调用] QItemSelection QAbstractProxyModel::mapSelectionToSource(const QItemSelection &;《代理选择》)const

返回从指定的《代理选择》映射的源选择。

重新实现此方法以将代理选择映射到源选择。

注意:这个函数可以通过元对象系统从 QML 中调用。请参阅 Q_INVOKABLE.

[纯虚拟可调用] QModelIndex QAbstractProxyModel::mapToSource(const QModelIndex &;《代理索引》)const

重新实现此函数以返回源模型中与代理模型中的《代理索引》对应的模型索引。

注意:这个函数可以通过元对象系统从 QML 中调用。请参阅 Q_INVOKABLE.

另请参阅mapFromSource

[覆盖虚拟] QMimeData *QAbstractProxyModel::mimeData(const QModelIndexList &;《索引列表》)const

重新实现:QAbstractItemModel::mimeData(const QModelIndexList &;《索引列表》)const

[覆盖虚拟] QStringList QAbstractProxyModel::mimeTypes() const

重新实现:QAbstractItemModel::mimeTypes() const

[覆盖虚拟] void QAbstractProxyModel::revert()

重新实现:QAbstractItemModel::revert

[覆盖虚拟] QHash<int, QByteArray> QAbstractProxyModel::roleNames() const

重新实现:QAbstractItemModel::roleNames() const

[覆盖虚拟] bool QAbstractProxyModel::setData(const QModelIndex &;《索引》,const QVariant &;《值》,int role = Qt::EditRole)

重新实现:QAbstractItemModel::setData(const QModelIndex &;《索引》,const QVariant &;《值》,int role)。

另请参阅data

[覆盖虚拟] bool QAbstractProxyModel::setHeaderData(int sectionQt::Orientation orientation,const QVariant &;《值》,int role = Qt::EditRole)

重新实现:QAbstractItemModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &;《值》,int role)。

另请参阅headerData

[覆盖虚拟] bool QAbstractProxyModel::setItemData(const QModelIndex &;《索引》,“const “QMap<;《int》,QVariant> &;《角色列表》)

重新实现:QAbstractItemModel::setItemData(const QModelIndex &index, const QMap &roles).

另见itemData().

[虚拟] void QAbstractProxyModel::setSourceModel(QAbstractItemModel *sourceModel)

设置给定的sourceModel由代理模型处理。

子类应在方法开始时调用beginResetModel(),与旧模型断开连接,调用此方法,连接到新模型,并调用endResetModel().

注意:属性sourceModel的设置函数。

另见sourceModel().

[重写虚拟] QModelIndex QAbstractProxyModel::sibling(int row, int column, const QModelIndex &idx) const

重新实现:QAbstractItemModel::sibling(int row, int column, const QModelIndex &index) const.

[重写虚拟] void QAbstractProxyModel::sort(int column, Qt::SortOrder order = Qt::AscendingOrder)

重新实现:QAbstractItemModel::sort(int column, Qt::SortOrder order).

QAbstractItemModel *QAbstractProxyModel::sourceModel() const

返回包含通过代理模型可用的数据的模型。

注意:属性sourceModel的获取函数。

另见setSourceModel().

[重写虚拟] QSize QAbstractProxyModel::span(const QModelIndex &index) const

重新实现:QAbstractItemModel::span(const QModelIndex &index) const.

[重写虚拟] bool QAbstractProxyModel::submit()

重新实现:QAbstractItemModel::submit().

[重写虚拟] Qt::DropActions QAbstractProxyModel::supportedDragActions() const

重新实现:QAbstractItemModel::supportedDragActions() const.

[重写虚拟] Qt::DropActions QAbstractProxyModel::supportedDropActions() const

重新实现:QAbstractItemModel::supportedDropActions() const.

© 2024 Qt公司有限。包含在此处的文档贡献是各自所有者的版权。此文档是根据自由软件基金会发布的、经修改的自由文档许可证版本1.3许可的。Qt及其相关标志是芬兰及其它国家/地区的Qt公司商标。所有其他商标均为其各自所有者的财产。