QConcatenateTablesProxyModel Class
QConcatenateTablesProxyModel 类代理多个源模型,串联它们的行。更多
Header: | #include <QConcatenateTablesProxyModel> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
继承: | QAbstractItemModel |
公共函数
QConcatenateTablesProxyModel(QObject *parent = nullptr) | |
virtual | ~QConcatenateTablesProxyModel() |
void | addSourceModel(QAbstractItemModel *sourceModel) |
QModelIndex | mapFromSource(const QModelIndex &sourceIndex) const |
QModelIndex | mapToSource(const QModelIndex &proxyIndex) const |
void | removeSourceModel(QAbstractItemModel *sourceModel) |
QList<QAbstractItemModel *> | sourceModels() const |
重新实现的公共函数
virtual bool | canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const override |
virtual int | columnCount(const QModelIndex &parent = QModelIndex()) const override |
virtual QVariant | data(const QModelIndex &index, int role = Qt::DisplayRole) const override |
virtual bool | dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override |
virtual Qt::ItemFlags | flags(const QModelIndex &index) const override |
virtual QVariant | headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override |
virtual QModelIndex | index(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 QStringList | mimeTypes() const override |
virtual QModelIndex | parent(const QModelIndex &index) const override |
(since 6.9.0) virtual QHash<int, QByteArray> | roleNames() const override |
virtual int | rowCount(const QModelIndex &parent = QModelIndex()) const override |
virtual bool | setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override |
virtual bool | setItemData(const QModelIndex &proxyIndex, const QMap<int, QVariant> &roles) override |
virtual QSize | span(const QModelIndex &index) const override |
详细描述
QConcatenateTablesProxyModel 接收多个源模型并串联它们的行。
换句话说,代理将包含第一个源模型的所有行,然后是第二个源模型的所有行,以此类推。
如果源模型的列数不一样,代理将只拥有列数最少的源模型的列数。其他源模型中的额外列将被忽略。
源模型可在运行时添加或删除,列数也会相应调整。
该代理不继承于QAbstractProxyModel ,因为它使用多个源模型,而不是一个。
只支持平面模型(列表和表格),不支持树状模型。
另请参阅 QAbstractProxyModel 、模型/视图编程、QIdentityProxyModel 和QAbstractItemModel 。
成员函数文档
[explicit]
QConcatenateTablesProxyModel::QConcatenateTablesProxyModel(QObject *parent = nullptr)
用给定的parent 构建一个串联行代理模型。
[virtual noexcept]
QConcatenateTablesProxyModel::~QConcatenateTablesProxyModel()
销毁此代理模型。
void QConcatenateTablesProxyModel::addSourceModel(QAbstractItemModel *sourceModel)
添加源模型sourceModel ,位于所有先前添加的源模型之下。
sourceModel 的所有权不受此影响。
同一源模型不能添加多次。
[override virtual]
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.
[override virtual]
int QConcatenateTablesProxyModel::columnCount(const QModelIndex &parent = QModelIndex()) const
重实现:QAbstractItemModel::columnCount(const QModelIndex &parent) const。
此方法返回列数最少的源模型的列数。
[override virtual]
QVariant QConcatenateTablesProxyModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const
重实现:QAbstractItemModel::data(const QModelIndex &index, int role) const.
另请参阅 setData().
[override virtual]
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 处理项目上、项目间和最后一个项目后的下拉操作。在所有情况下,调用都会转发到底层源模型。当下放到一个项目上时,会调用此项目的源模型。在项目之间下拉时,会调用紧靠下拉位置下方的源模型。在最后一个项目后下放时,会调用最后一个源模型。
[override virtual]
Qt::ItemFlags QConcatenateTablesProxyModel::flags(const QModelIndex &index) const
重实现:QAbstractItemModel::flags(const QModelIndex &index) const.
返回给定索引的标志。如果index 有效,则标志来自此index 的源模型。如果index 无效(例如,用于确定是否允许向视图中的空白区域投放),则返回第一个模型的标志。
[override virtual]
QVariant QConcatenateTablesProxyModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const
重实现:QAbstractItemModel::headerData(int section, Qt::Orientation orientation, int role) const.
此方法返回第一个源模型的水平标题数据,以及与每一行对应的源模型的垂直标题数据。
[override virtual]
QModelIndex QConcatenateTablesProxyModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const
重实现:QAbstractItemModel::index(int row, int column, const QModelIndex &parent) const.
[override virtual]
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 的源索引。
[override virtual]
QMimeData *QConcatenateTablesProxyModel::mimeData(const QModelIndexList &indexes) const
重实现:QAbstractItemModel::mimeData(const QModelIndexList &indexes) const。
调用将被转发到indexes 列表中第一个索引的源模型。
重要:请注意,此代理仅支持拖动单行。如果使用来自多行的索引调用该代理,则会出现断言,因为该代理模型无法通用地实现拖动可能来自不同源模型的行。QMimeData 中的每条数据都需要合并,这是特定于数据类型的。如果要支持拖动多行,请在子类中重新实现此方法。
[override virtual]
QStringList QConcatenateTablesProxyModel::mimeTypes() const
重实现:QAbstractItemModel::mimeTypes() 常量。
此方法返回第一个源模型的 mime 类型。
[override virtual]
QModelIndex QConcatenateTablesProxyModel::parent(const QModelIndex &index) const
重实现:QAbstractItemModel::parent(const QModelIndex &index) const.
void QConcatenateTablesProxyModel::removeSourceModel(QAbstractItemModel *sourceModel)
删除先前添加到此代理的源模型sourceModel 。
sourceModel 的所有权不受此影响。
[override virtual, since 6.9.0]
QHash<int, QByteArray> QConcatenateTablesProxyModel::roleNames() const
重实现:QAbstractItemModel::roleNames() 常量。
返回底层模型的角色名称()的联合值。
如果源模型为同一角色关联了不同的名称,则最后一个源模型中使用的名称会覆盖先前模型中使用的名称。
此函数在 Qt 6.9.0 中引入。
[override virtual]
int QConcatenateTablesProxyModel::rowCount(const QModelIndex &parent = QModelIndex()) const
重实现:QAbstractItemModel::rowCount(const QModelIndex &parent) const.
[override virtual]
bool QConcatenateTablesProxyModel::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 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
返回为该代理模型添加源模型的模型列表。
[override virtual]
QSize QConcatenateTablesProxyModel::span(const QModelIndex &index) const
重实现:QAbstractItemModel::span(const QModelIndex &index) 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.