QConcatenateTablesProxyModel 类

QConcatenateTablesProxyModel 类代理多个源模型,将它们的行连接起来。 更多信息...

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

公开函数

QConcatenateTablesProxyModel(QObject *parent = nullptr)
virtual~QConcatenateTablesProxyModel()
voidaddSourceModel(QAbstractItemModel *sourceModel)
QModelIndexmapFromSource(const QModelIndex &sourceIndex) const
QModelIndexmapToSource(const QModelIndex &proxyIndex) const
voidremoveSourceModel(QAbstractItemModel *sourceModel)
QList<QAbstractItemModel *>sourceModels() const

重写的公开函数

virtual boolcanDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const override
virtual intcolumnCount(const QModelIndex &parent = QModelIndex()) const override
virtual QVariantdata(const QModelIndex &index, int role = Qt::DisplayRole) const override
virtual booldropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
virtual Qt::ItemFlagsflags(const QModelIndex &index) const override
virtual QVariantheaderData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override
virtual QModelIndexindex(int row, int column, const QModelIndex &parent = QModelIndex()) const override
virtual QMap<int, QVariant>itemData(const QModelIndex &proxyIndex) const override
virtual QMimeData *mimeData(const QModelIndexList &indexes) const override
virtual QStringListmimeTypes() const override
virtual QModelIndexparent(const QModelIndex &index) const override
virtual introwCount(const QModelIndex &parent = QModelIndex()) const override
virtual boolsetData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override
virtual boolsetItemData(const QModelIndex &proxyIndex, const QMap<int, QVariant> &roles) override
virtual QSizespan(const QModelIndex &index) const override

详细描述

QConcatenateTablesProxyModel将多个源模型合并,并将它们的行拼接。

换句话说,代理将包含第一个源模型的全部行,接着是第二个源模型的全部行,依此类推。

如果源模型列数不同,代理将只包含列数最少的源模型的列数。其他源模型中的额外列将被忽略。

可以在运行时添加和移除源模型,并根据需要调整列数。

此代理不继承自QAbstractProxyModel,因为它使用多个源模型,而不是单个源模型。

仅支持平面模型(列表和表格),不支持树模型。

另请参阅QAbstractProxyModel模型/视图编程QIdentityProxyModelQAbstractItemModel

成员函数文档

[显式] QConcatenateTablesProxyModel::QConcatenateTablesProxyModel(QObject *parent = nullptr)

使用指定的parent构建行合并代理模型。

[虚拟 noexcept] QConcatenateTablesProxyModel::~QConcatenateTablesProxyModel()

销毁此代理模型。

void QConcatenateTablesProxyModel::addSourceModel(QAbstractItemModel *sourceModel)

添加源模型sourceModel,位于所有已添加源模型下方。

此操作不会影响sourceModel的所有权。

同一个源模型不能添加超过一次。

[覆盖虚拟] bool QConcatenateTablesProxyModel::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

[覆盖虚拟] int QConcatenateTablesProxyModel::columnCount(const QModelIndex &parent = QModelIndex()) const

重新实现了:QAbstractItemModel::columnCount(const QModelIndex &parent) const

此方法返回列数最少的源模型的列数。

[覆盖虚拟] QVariant QConcatenateTablesProxyModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const

重新实现了:QAbstractItemModel::data(const QModelIndex &index, int role) const

另请参阅setData

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

QConcatenateTablesProxyModel 允许在项目上、项目之间以及最后一个项目之后放置数据。在所有情况下,调用都转发到底层源模型。当放置到项目上时,调用该项的源模型。当放置在项目之间时,调用放置位置正下方的源模型。当放置在最后一个项目之后时,调用最后一个源模型。

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

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

返回给定索引的标志。如果index有效,则标志来自index的源模型。如果index无效(例如,用于确定是否允许在视图中放置到空区域),则返回第一个模型的标志。

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

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

此方法返回第一个源模型的水平表头数据,以及对应每行的源模型的垂直表头数据。

[覆盖虚函数] QModelIndex QConcatenateTablesProxyModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const

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

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

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

另请参阅 setItemData().

QModelIndex QConcatenateTablesProxyModel::mapFromSource(const QModelIndex &sourceIndex) const

返回给定sourceIndex的代理索引,该索引可以来自任何源模型。

QModelIndex QConcatenateTablesProxyModel::mapToSource(const QModelIndex &proxyIndex) const

返回给定 proxyIndex 的源索引。

[覆盖虚函数] QMimeData *QConcatenateTablesProxyModel::mimeData(const QModelIndexList & indexes) const

重写: QAbstractItemModel::mimeData(const QModelIndexList &indexes) const.

调用被转发到 indexes 列表中第一个索引的源模型。

重要提示:请注意,此代理仅支持拖动单行。如果使用多行索引调用,则会断言,因为不支持通过此代理模型泛型实现可能来自不同源模型的行的拖动。QMimeData中的每条数据都需要合并,这需要特定数据类型。如果您想要支持拖动多行,请在此子类中重写此方法。

[覆盖虚函数] QStringList QConcatenateTablesProxyModel::mimeTypes() const

重写: QAbstractItemModel::mimeTypes() const.

此方法返回第一个源模型的MIME类型。

[覆盖虚函数] QModelIndex QConcatenateTablesProxyModel::parent(const QModelIndex & index) const

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

void QConcatenateTablesProxyModel::removeSourceModel(QAbstractItemModel * sourceModel)

移除之前添加到此代理的源模型 sourceModel

此操作不会影响sourceModel的所有权。

[覆盖虚函数] int QConcatenateTablesProxyModel::rowCount(const QModelIndex & parent = QModelIndex()) const

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

[覆盖虚函数] bool QConcatenateTablesProxyModel::setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole)

重写: QAbstractItemModel::setData(const QModelIndex &index, const QVariant &value, int role).

另请参阅 data().

[覆盖虚函数] bool QConcatenateTablesProxyModel::setItemData(const QModelIndex & proxyIndex, const QMap<int, QVariant> & roles)

重写: QAbstractItemModel::setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles).

另请参阅 itemData().

QList<QAbstractItemModel *> QConcatenateTablesProxyModel::sourceModels() const

返回作为此代理模型源模型添加的模型列表。

[覆盖虚函数] QSize QConcatenateTablesProxyModel::span(const QModelIndex &index) const

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

© 2024 Qt公司。此处包含的文档贡献的版权归其所有者。此处提供的文档根据Free Software Foundation发布的GNU自由文档许可证版本1.3的条款许可。Qt及其相关商标是Qt公司在芬兰和/或其他国家的商标。所有其他商标归其所有者所有。