QAbstractProxyModel 类
QAbstractProxyModel 类提供了一个基类,用于实现可以进行排序、过滤或其他数据处理的代理项模型。 更多信息...
头文件 | #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 &;《i>parent = QModelIndex()) const override |
virtual QVariant | headerData(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 QStringList | mimeTypes() const override |
virtual void | revert() override |
virtual QHash<int,QByteArray> | roleNames() const override |
virtual bool | setData(const QModelIndex &;《i>index,const QVariant &;《i>value,int 《i>role = Qt::EditRole) override |
virtual bool | setHeaderData(int 《i>section,Qt::Orientation 《i>orientation,const QVariant &;《i>value,int 《i>role = Qt::EditRole) override |
virtual bool | setItemData(const QModelIndex &;《i>index,const QMap<int,QVariant> &;《i>roles) override |
virtual QModelIndex | sibling(int 《i>row,int 《i>column,const QModelIndex &;《i>idx) const override |
virtual void | sort(int 《i>column,Qt::SortOrder 《i>order = Qt::AscendingOrder) override |
virtual QSize | span(const QModelIndex &;《i>index) const override |
virtual bool | submit() override |
virtual Qt::DropActions | supportedDragActions() const override |
virtual Qt::DropActions | supportedDropActions() const override |
信号
void | sourceModelChanged() |
受保护函数
(自 6.2) QModelIndex | createSourceIndex(int 《i>row,int 《i>col,void *《i>internalPtr) const |
详细描述
此类定义了代理模型必须使用标准接口才能与其他模型/视图组件正确交互。它不应直接实例化。
所有标准代理模型都继承自 QAbstractProxyModel 类。如果您需要创建新的代理模型类,通常更好的方法是扩展一个现有的类,该类提供与您想要提供的行为最接近的行为。
应通过使用或扩展 QSortFilterProxyModel 来创建或扩展过滤或排序源模型数据项的代理模型。
要扩展 QAbstractProxyModel,您需要实现 mapFromSource() 和 mapToSource()。只有您需要不同于默认行为的行为时,才需要重新实现 mapSelectionFromSource() 和 mapSelectionToSource() 函数。
注意:如果源模型被删除或未指定源模型,则代理模型在空占位符模型上操作。
另请参阅:QSortFilterProxyModel、QAbstractItemModel 以及 模型/视图编程。
成员函数文档
[明确]
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
[重写虚函数]
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 section,Qt::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
另见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
© 2024 Qt公司有限。包含在此处的文档贡献是各自所有者的版权。此文档是根据自由软件基金会发布的、经修改的自由文档许可证版本1.3许可的。Qt及其相关标志是芬兰及其它国家/地区的Qt公司商标。所有其他商标均为其各自所有者的财产。