QConcatenateTablesProxyModel Class
QConcatenateTablesProxyModel 类作为多个源模型的代理,将它们的行进行拼接。更多内容...
| 标题: | #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 、Model/View 编程、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()。
[invokable] QModelIndex QConcatenateTablesProxyModel::mapFromSource(const QModelIndex &sourceIndex) const
返回给定sourceIndex 的代理索引,该 可以来自任何源模型。
注意: 可通过元对象系统和 QML 调用此 函数。参见Q_INVOKABLE 。
[invokable] QModelIndex QConcatenateTablesProxyModel::mapToSource(const QModelIndex &proxyIndex) const
返回给定proxyIndex 的源索引。
注意: 可以通过元对象系统和 QML 调用此 函数。请参阅Q_INVOKABLE 。
[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() const。
该方法返回第一个源模型的 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() const。
返回底层模型的 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。
© 2026 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.