Класс QConcatenateTablesProxyModel
Класс QConcatenateTablesProxyModel проксирует несколько моделей-источников, конкатенируя их строки. Подробнее...
| Заголовок: | #include <QConcatenateTablesProxyModel> |
| CMake: | find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| С тех пор: | Qt 5.13 |
| Наследует: | 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 |
| 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.
Документация по функциям-членам
QConcatenateTablesProxyModel::QConcatenateTablesProxyModel(QObject *parent = nullptr)
Конструирует прокси-модель, конкатенирующую строки, с заданным parent.
[virtual] 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.
Важно: Обратите внимание, что этот прокси поддерживает только перетаскивание одной строки. Он будет делать assertion, если вызван с индексами из нескольких строк, потому что перетаскивание строк, которые могут исходить из разных исходных моделей, не может быть реализовано этим прокси-моделью обобщенно. Каждый фрагмент данных в 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] 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().
[since 5.15] QList<QAbstractItemModel *> QConcatenateTablesProxyModel::sourceModels() const
Возвращает список моделей, добавленных в качестве исходных моделей для этой прокси-модели.
Эта функция была добавлена в Qt 5.15.
[override virtual] QSize QConcatenateTablesProxyModel::span(const QModelIndex &index) const
Переопределяет: QAbstractItemModel::span(const QModelIndex &index) const.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qconcatenatetablesproxymodel.html