Класс QSortFilterProxyModel
Класс QSortFilterProxyModel предоставляет поддержку сортировки и фильтрации данных, передаваемых между другой моделью и представлением. Подробнее...
| Заголовок: | #include <QSortFilterProxyModel> |
| CMake: | find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Наследует: | QAbstractProxyModel |
Свойства
|
|
Открытые функции
| QSortFilterProxyModel(QObject *parent = nullptr) | |
| virtual | ~QSortFilterProxyModel() |
| bool | autoAcceptChildRows() const |
| bool | dynamicSortFilter() const |
| Qt::CaseSensitivity | filterCaseSensitivity() const |
| int | filterKeyColumn() const |
| QRegularExpression | filterRegularExpression() const |
| int | filterRole() const |
| bool | isRecursiveFilteringEnabled() const |
| bool | isSortLocaleAware() const |
| void | setAutoAcceptChildRows(bool accept) |
| void | setDynamicSortFilter(bool enable) |
Реализованные открытые функции
| виртуальный QModelIndex | buddy(const QModelIndex &index) const override |
| виртуальный bool | canFetchMore(const QModelIndex &parent) const override |
| виртуальный int | columnCount(const QModelIndex &parent = QModelIndex()) const override |
| виртуальный QVariant | data(const QModelIndex &index, int role = Qt::DisplayRole) const override |
| виртуальный bool | dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override |
| виртуальный void | fetchMore(const QModelIndex &parent) override |
| виртуальный Qt::ItemFlags | flags(const QModelIndex &index) const override |
| виртуальный bool | hasChildren(const QModelIndex &parent = QModelIndex()) const override |
| виртуальный QVariant | headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override |
| виртуальный QModelIndex | index(int row, int column, const QModelIndex &parent = QModelIndex()) const override |
| виртуальный bool | insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override |
| виртуальный bool | insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) override |
| виртуальный QModelIndex | mapFromSource(const QModelIndex &sourceIndex) const override |
| виртуальный QItemSelection | mapSelectionFromSource(const QItemSelection &sourceSelection) const override |
| виртуальный QItemSelection | mapSelectionToSource(const QItemSelection &proxySelection) const override |
| виртуальный QModelIndex | mapToSource(const QModelIndex &proxyIndex) const override |
| виртуальный QModelIndexList | match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const override |
| виртуальный QMimeData * | mimeData(const QModelIndexList &indexes) const override |
| виртуальный QStringList | mimeTypes() const override |
| виртуальный QModelIndex | parent(const QModelIndex &child) const override |
| виртуальный bool | removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override |
| виртуальный bool | removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) override |
| виртуальный int | rowCount(const QModelIndex &parent = QModelIndex()) const override |
| виртуальный bool | setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override |
| виртуальный bool | setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole) override |
| виртуальный void | setSourceModel(QAbstractItemModel *sourceModel) override |
| виртуальный QModelIndex | sibling(int row, int column, const QModelIndex &idx) const override |
| виртуальный void | sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override |
| виртуальный QSize | span(const QModelIndex &index) const override |
| виртуальный Qt::DropActions | supportedDropActions() const override |
Публичные слоты
| void | invalidate() |
| void | setFilterFixedString(const QString &pattern) |
| void | setFilterRegularExpression(const QRegularExpression ®ularExpression) |
| void | setFilterRegularExpression(const QString &pattern) |
| void | setFilterWildcard(const QString &pattern) |
Сигналы
| void | autoAcceptChildRowsChanged(bool autoAcceptChildRows) |
| void | filterCaseSensitivityChanged(Qt::CaseSensitivity filterCaseSensitivity) |
| void | filterRoleChanged(int filterRole) |
| void | recursiveFilteringEnabledChanged(bool recursiveFilteringEnabled) |
| void | sortCaseSensitivityChanged(Qt::CaseSensitivity sortCaseSensitivity) |
| void | sortLocaleAwareChanged(bool sortLocaleAware) |
| void | sortRoleChanged(int sortRole) |
Защищенные функции
| виртуальный bool | filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const |
| виртуальный bool | filterAcceptsRow(int source_row, const QModelIndex &source_parent) const |
| void | invalidateColumnsFilter() |
| void | invalidateFilter() |
| void | invalidateRowsFilter() |
| виртуальный bool | lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const |
Подробное описание
QSortFilterProxyModel может использоваться для сортировки элементов, фильтрации элементов или для обоих задач. Модель преобразует структуру исходной модели, сопоставляя индексы модели, которые она предоставляет, с новыми индексами, соответствующими различным расположениям, для использования представлениями. Этот подход позволяет перестраивать заданную исходную модель с точки зрения представлений без необходимости каких-либо преобразований исходных данных и без дублирования данных в памяти.
Предположим, что мы хотим отсортировать и отфильтровать элементы, предоставляемые пользовательской моделью. Код для настройки модели и представления без сортировки и фильтрации будет выглядеть так:
QTreeView *treeView = new QTreeView;
MyItemModel *model = new MyItemModel(this);
treeView->setModel(model); Для добавления поддержки сортировки и фильтрации к MyItemModel, необходимо создать QSortFilterProxyModel, вызвать setSourceModel() с MyItemModel в качестве аргумента и установить QSortFilterProxyModel в представлении:
QTreeView *treeView = new QTreeView;
MyItemModel *sourceModel = new MyItemModel(this);
QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(this);
proxyModel->setSourceModel(sourceModel);
treeView->setModel(proxyModel); В этот момент ни сортировка, ни фильтрация не включены; исходные данные отображаются в представлении. Все изменения, внесённые через QSortFilterProxyModel, применяются к исходной модели.
QSortFilterProxyModel действует как оболочка для исходной модели. Если вам нужно преобразовать исходные QModelIndex в отсортированные/отфильтрованные индексы модели или наоборот, используйте mapToSource(), mapFromSource(), mapSelectionToSource() и mapSelectionFromSource().
Примечание: По умолчанию модель динамически повторно сортирует и повторно фильтрует данные всякий раз, когда меняется исходная модель. Это поведение можно изменить, установив свойство dynamicSortFilter.
Примеры Basic Sort/Filter Model и Custom Sort/Filter Model демонстрируют, как использовать QSortFilterProxyModel для выполнения базовой сортировки и фильтрации и как подклассировать его для реализации пользовательского поведения.
Сортировка
QTableView и QTreeView имеют свойство sortingEnabled, которое управляет возможностью пользователя сортировать представление, нажимая на заголовках столбцов представления. Например:
treeView->setSortingEnabled(true);
Когда эта функция включена (по умолчанию выключена), нажатие на заголовок столбца сортирует элементы по этому столбцу. Повторные нажатия позволяют пользователю переключаться между возрастанием и убыванием.
За кулисами представление вызывает виртуальную функцию sort() модели, чтобы переупорядочить данные в модели. Чтобы сделать ваши данные сортируемыми, вы можете реализовать sort() в своей модели или использовать QSortFilterProxyModel для обертывания вашей модели — QSortFilterProxyModel предоставляет общую реализацию sort(), которая работает с sortRole() (Qt::DisplayRole по умолчанию) элементов и понимает несколько типов данных, включая int, QString и QDateTime. Для иерархических моделей сортировка применяется рекурсивно ко всем дочерним элементам. Сравнение строк по умолчанию чувствительно к регистру; это можно изменить, установив свойство sortCaseSensitivity.
Пользовательское поведение сортировки достигается путём подклассирования QSortFilterProxyModel и переопределения lessThan(), которое используется для сравнения элементов. Например:
bool MySortFilterProxyModel::lessThan(const QModelIndex &left,
const QModelIndex &right) const
{
QVariant leftData = sourceModel()->data(left);
QVariant rightData = sourceModel()->data(right);
if (leftData.userType() == QMetaType::QDateTime) {
return leftData.toDateTime() < rightData.toDateTime();
} else {
static const QRegularExpression emailPattern("[\\w\\.]*@[\\w\\.]*");
QString leftString = leftData.toString();
if (left.column() == 1) {
const QRegularExpressionMatch match = emailPattern.match(leftString);
if (match.hasMatch())
leftString = match.captured(0);
}
QString rightString = rightData.toString();
if (right.column() == 1) {
const QRegularExpressionMatch match = emailPattern.match(rightString);
if (match.hasMatch())
rightString = match.captured(0);
}
return QString::localeAwareCompare(leftString, rightString) < 0;
}
} (Этот фрагмент кода взят из примера Custom Sort/Filter Model.)
Альтернативный подход к сортировке заключается в отключении сортировки в представлении и наложении определённого порядка для пользователя. Это делается путём явного вызова sort() с желаемым столбцом и порядком в качестве аргументов на QSortFilterProxyModel (или на исходной модели, если она реализует sort()). Например:
proxyModel->sort(2, Qt::AscendingOrder);
QSortFilterProxyModel может быть отсортирован по столбцу -1, в этом случае он возвращается к порядку сортировки исходной модели.
Фильтрация
В дополнение к сортировке QSortFilterProxyModel может использоваться для скрытия элементов, которые не соответствуют определённому фильтру. Фильтр задаётся с помощью объекта QRegularExpression и применяется к filterRole() (Qt::DisplayRole по умолчанию) каждого элемента для заданного столбца. Объект QRegularExpression может использоваться для соответствия регулярному выражению, шаблону с подстановочными знаками или строке. Например:
proxyModel->setFilterRegularExpression(QRegularExpression("\.png", QRegularExpression::CaseInsensitiveOption));
proxyModel->setFilterKeyColumn(1); Для иерархических моделей фильтр применяется рекурсивно ко всем дочерним элементам. Если элемент-родитель не соответствует фильтру, ни один из его дочерних элементов не будет отображаться.
Распространённый случай использования — позволить пользователю указать регулярное выражение фильтра, шаблон с подстановочными знаками или строку в QLineEdit и подключить сигнал textChanged() к setFilterRegularExpression(), setFilterWildcard() или setFilterFixedString() для повторного применения фильтра.
Пользовательское поведение фильтрации можно достичь путём переопределения функций filterAcceptsRow() и filterAcceptsColumn(). Например (из примера Custom Sort/Filter Model): следующая реализация игнорирует свойство filterKeyColumn и выполняет фильтрацию по столбцам 0, 1 и 2:
bool MySortFilterProxyModel::filterAcceptsRow(int sourceRow,
const QModelIndex &sourceParent) const
{
QModelIndex index0 = sourceModel()->index(sourceRow, 0, sourceParent);
QModelIndex index1 = sourceModel()->index(sourceRow, 1, sourceParent);
QModelIndex index2 = sourceModel()->index(sourceRow, 2, sourceParent);
return (sourceModel()->data(index0).toString().contains(filterRegularExpression())
|| sourceModel()->data(index1).toString().contains(filterRegularExpression()))
&& dateInRange(sourceModel()->data(index2).toDate());
} (Этот фрагмент кода взят из примера Custom Sort/Filter Model.)
Если вы работаете с большими объёмами данных и должны вызывать invalidateFilter() многократно, использование beginResetModel() / endResetModel() может быть более эффективным, в зависимости от реализации вашей модели. Однако beginResetModel() / endResetModel() возвращает прокси-модель в исходное состояние, теряя информацию о выделении, и заставит прокси-модель быть пересозданной.
Подклассирование
Поскольку QAbstractProxyModel и его подклассы наследуются от QAbstractItemModel, большая часть советов по подклассированию обычных моделей также применима к прокси-моделям. Кроме того, стоит отметить, что многие из реализаций функций в этом классе написаны так, что они вызывают эквивалентные функции в соответствующей исходной модели. Этот простой механизм проксирования может потребоваться переопределить для исходных моделей с более сложным поведением; например, если исходная модель предоставляет пользовательскую реализацию hasChildren(), вы также должны предоставить её в прокси-модели.
Примечание: Некоторые общие рекомендации по подклассированию моделей доступны в Справочник по подклассированию моделей.
См. также QAbstractProxyModel, QAbstractItemModel, Программирование с помощью моделей/представлений, Пример Basic Sort/Filter Model, Пример Custom Sort/Filter Model и QIdentityProxyModel.
END_OF_DOCUMENT_MARKER ```Документация свойств
[since 6.0] autoAcceptChildRows : bool
Если true, прокси-модель не будет отфильтровывать потомков принятых строк, даже если они сами были бы отфильтрованы.
Значение по умолчанию — false.
Это свойство было добавлено в Qt 6.0.
Функции доступа:
| bool | autoAcceptChildRows() const |
| void | setAutoAcceptChildRows(bool accept) |
Сигнал уведомления:
| void | autoAcceptChildRowsChanged(bool autoAcceptChildRows) |
См. также recursiveFilteringEnabled и filterAcceptsRow().
dynamicSortFilter : bool
Это свойство указывает, динамически ли сортируется и фильтруется прокси-модель при изменении содержимого исходной модели.
Обратите внимание, что вы не должны обновлять исходную модель через прокси-модель, когда dynamicSortFilter имеет значение true. Например, если вы установили прокси-модель на QComboBox, то использование функций, обновляющих модель, например, addItem(), не будет работать как ожидается. Альтернативой является установка dynamicSortFilter в значение false и вызов sort() после добавления элементов в QComboBox.
Значение по умолчанию — true.
Функции доступа:
| bool | dynamicSortFilter() const |
| void | setDynamicSortFilter(bool enable) |
filterCaseSensitivity : Qt::CaseSensitivity
Это свойство определяет чувствительность к регистру шаблона QRegularExpression, используемого для фильтрации содержимого исходной модели.
По умолчанию фильтр чувствителен к регистру.
Функции доступа:
| Qt::CaseSensitivity | filterCaseSensitivity() const |
| void | setFilterCaseSensitivity(Qt::CaseSensitivity cs) |
Сигнал уведомления:
| void | filterCaseSensitivityChanged(Qt::CaseSensitivity filterCaseSensitivity) |
См. также filterRegularExpression и sortCaseSensitivity.
filterKeyColumn : int
Это свойство содержит номер столбца, из которого считывается ключ, используемый для фильтрации содержимого исходной модели.
Значение по умолчанию — 0. Если значение равно -1, ключи будут считываться из всех столбцов.
Функции доступа:
| int | filterKeyColumn() const |
| void | setFilterKeyColumn(int column) |
[since 5.12] filterRegularExpression : QRegularExpression
Это свойство содержит QRegularExpression, используемый для фильтрации содержимого исходной модели.
Установка этого свойства перезаписывает текущее свойство filterCaseSensitivity. По умолчанию QRegularExpression — пустая строка, соответствующая всему содержимому.
Если не задана QRegularExpression или задана пустая строка, всё содержимое исходной модели будет принято.
Это свойство было добавлено в Qt 5.12.
Функции доступа:
| QRegularExpression | filterRegularExpression() const |
| void | setFilterRegularExpression(const QString &pattern) |
| void | setFilterRegularExpression(const QRegularExpression ®ularExpression) |
См. также filterCaseSensitivity, setFilterWildcard() и setFilterFixedString().
filterRole : int
Это свойство содержит роль элемента, используемую для запроса данных исходной модели при фильтрации элементов.
Значение по умолчанию — Qt::DisplayRole.
Функции доступа:
| int | filterRole() const |
| void | setFilterRole(int role) |
Сигнал уведомления:
| void | filterRoleChanged(int filterRole) |
См. также filterAcceptsRow().
isSortLocaleAware : bool
Это свойство содержит значение, указывающее, учитывается ли локаль при сравнении строк при сортировке.
По умолчанию сортировка не учитывает локаль.
Функции доступа:
| bool | isSortLocaleAware() const |
| void | setSortLocaleAware(bool on) |
Сигнал уведомления:
| void | sortLocaleAwareChanged(bool sortLocaleAware) |
См. также sortCaseSensitivity и lessThan().
[since 5.10] recursiveFilteringEnabled : bool
Это свойство содержит значение, указывающее, применяется ли фильтр рекурсивно к потомкам, и если какой-то потомок соответствует фильтру, то и его предки будут видимыми.
Значение по умолчанию — false.
Это свойство было добавлено в Qt 5.10.
Функции доступа:
| bool | isRecursiveFilteringEnabled() const |
| void | setRecursiveFilteringEnabled(bool recursive) |
Сигнал уведомления:
| void | recursiveFilteringEnabledChanged(bool recursiveFilteringEnabled) |
См. также autoAcceptChildRows и filterAcceptsRow().
sortCaseSensitivity : Qt::CaseSensitivity
Это свойство содержит значение, указывающее чувствительность к регистру при сравнении строк при сортировке.
По умолчанию сортировка чувствительна к регистру.
Функции доступа:
| Qt::CaseSensitivity | sortCaseSensitivity() const |
| void | setSortCaseSensitivity(Qt::CaseSensitivity cs) |
Сигнал уведомления:
| void | sortCaseSensitivityChanged(Qt::CaseSensitivity sortCaseSensitivity) |
См. также filterCaseSensitivity и lessThan().
sortRole : int
Это свойство содержит роль элемента, используемую для запроса данных исходной модели при сортировке элементов.
Значение по умолчанию — Qt::DisplayRole.
Функции доступа:
| int | sortRole() const |
| void | setSortRole(int role) |
Сигнал уведомления:
| void | sortRoleChanged(int sortRole) |
См. также lessThan().
Документация по членам-функциям
QSortFilterProxyModel::QSortFilterProxyModel(QObject *parent = nullptr)
Создаёт модель сортировки и фильтрации с заданным parent.
[signal, since 6.0] void QSortFilterProxyModel::autoAcceptChildRowsChanged(bool autoAcceptChildRows)
Этот сигнал излучается при изменении значения свойства autoAcceptChildRows.
Примечание: Сигнал уведомления для свойства autoAcceptChildRows.
Эта функция была добавлена в Qt 6.0.
См. также autoAcceptChildRows.
[signal, since 5.15] void QSortFilterProxyModel::filterCaseSensitivityChanged(Qt::CaseSensitivity filterCaseSensitivity)
Этот сигнал излучается при изменении чувствительности к регистру фильтра на filterCaseSensitivity.
Примечание: Сигнал уведомления для свойства filterCaseSensitivity.
Эта функция была добавлена в Qt 5.15.
[signal, since 5.15] void QSortFilterProxyModel::filterRoleChanged(int filterRole)
Этот сигнал излучается при изменении роли фильтра на filterRole.
Примечание: Сигнал уведомления для свойства filterRole.
Эта функция была добавлена в Qt 5.15.
[slot] void QSortFilterProxyModel::invalidate()
Очищает текущую сортировку и фильтрацию.
См. также invalidateFilter().
[signal, since 5.15] void QSortFilterProxyModel::recursiveFilteringEnabledChanged(bool recursiveFilteringEnabled)
Этот сигнал излучается при изменении рекурсивного фильтра на recursiveFilteringEnabled.
Примечание: Сигнал уведомления для свойства recursiveFilteringEnabled.
Эта функция была добавлена в Qt 5.15.
[slot] void QSortFilterProxyModel::setFilterFixedString(const QString &pattern)
Устанавливает строку, используемую для фильтрации содержимого источника модели, на заданную pattern.
См. также setFilterCaseSensitivity(), setFilterRegularExpression(), setFilterWildcard() и filterRegularExpression().
[slot, since 5.12] void QSortFilterProxyModel::setFilterRegularExpression(const QString &pattern)
Устанавливает регулярное выражение, используемое для фильтрации содержимого источника модели на pattern.
Эта функция предпочтительнее для нового кода, так как она использует QRegularExpression внутри.
Примечание: Функция-установщик для свойства filterRegularExpression.
Эта функция была добавлена в Qt 5.12.
См. также setFilterCaseSensitivity(), setFilterWildcard(), setFilterFixedString() и filterRegularExpression().
[slot] void QSortFilterProxyModel::setFilterWildcard(const QString &pattern)
Устанавливает выражение с подстановкой, используемое для фильтрации содержимого источника модели, на заданную pattern.
См. также setFilterCaseSensitivity(), setFilterRegularExpression(), setFilterFixedString() и filterRegularExpression().
[signal, since 5.15] void QSortFilterProxyModel::sortCaseSensitivityChanged(Qt::CaseSensitivity sortCaseSensitivity)
Этот сигнал излучается при изменении чувствительности к регистру сортировки на sortCaseSensitivity.
Примечание: Сигнал уведомления для свойства sortCaseSensitivity.
Эта функция была добавлена в Qt 5.15.
[signal, since 5.15] void QSortFilterProxyModel::sortLocaleAwareChanged(bool sortLocaleAware)
Этот сигнал излучается при изменении настроек локализованной сортировки на sortLocaleAware.
Примечание: Сигнал уведомления для свойства isSortLocaleAware.
Эта функция была добавлена в Qt 5.15.
[signal, since 5.15] void QSortFilterProxyModel::sortRoleChanged(int sortRole)
Этот сигнал излучается при изменении роли сортировки на sortRole.
Примечание: Сигнал уведомления для свойства sortRole.
Эта функция была добавлена в Qt 5.15.
[virtual] QSortFilterProxyModel::~QSortFilterProxyModel()
Уничтожает эту модель сортировки и фильтрации.
[override virtual] QModelIndex QSortFilterProxyModel::buddy(const QModelIndex &index) const
Переопределяет: QAbstractProxyModel::buddy(const QModelIndex &index) const.
[override virtual] bool QSortFilterProxyModel::canFetchMore(const QModelIndex &parent) const
Переопределяет: QAbstractProxyModel::canFetchMore(const QModelIndex &parent) const.
[override virtual] int QSortFilterProxyModel::columnCount(const QModelIndex &parent = QModelIndex()) const
Переопределяет: QAbstractItemModel::columnCount(const QModelIndex &parent) const.
[override virtual] QVariant QSortFilterProxyModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const
Переопределяет: QAbstractProxyModel::data(const QModelIndex &proxyIndex, int role) const.
См. также setData().
[override virtual] bool QSortFilterProxyModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
Переопределяет: QAbstractProxyModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent).
[override virtual] void QSortFilterProxyModel::fetchMore(const QModelIndex &parent)
Переопределяет: QAbstractProxyModel::fetchMore(const QModelIndex &parent).
[virtual protected] bool QSortFilterProxyModel::filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const
Возвращает true , если элемент в столбце, указанном source_column и source_parent, должен быть включён в модель; в противном случае возвращает false.
Примечание: По умолчанию возвращает true. Вы должны переопределить этот метод, чтобы получить описанное поведение.
См. также filterAcceptsRow(), setFilterFixedString(), setFilterRegularExpression() и setFilterWildcard().
[virtual protected] bool QSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
Возвращает true, если элемент в строке, указанной source_row и source_parent, должен быть включён в модель; в противном случае возвращает false.
Реализация по умолчанию возвращает true, если значение соответствующего элемента совпадает со строкой фильтра, строкой с подстановкой или регулярным выражением.
Примечание: По умолчанию используется Qt::DisplayRole, чтобы определить, должна ли строка быть принята. Это можно изменить, установив свойство filterRole.
См. также filterAcceptsColumn(), setFilterFixedString(), setFilterRegularExpression() и setFilterWildcard().
[override virtual] Qt::ItemFlags QSortFilterProxyModel::flags(const QModelIndex &index) const
Переопределяет: QAbstractProxyModel::flags(const QModelIndex &index) const.
[override virtual] bool QSortFilterProxyModel::hasChildren(const QModelIndex &parent = QModelIndex()) const
Переопределяет: QAbstractProxyModel::hasChildren(const QModelIndex &parent) const.
[override virtual] QVariant QSortFilterProxyModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const
Переопределяет: QAbstractProxyModel::headerData(int section, Qt::Orientation orientation, int role) const.
См. также setHeaderData().
[override virtual] QModelIndex QSortFilterProxyModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const
Переопределяет: QAbstractItemModel::index(int row, int column, const QModelIndex &parent) const.
[override virtual] bool QSortFilterProxyModel::insertColumns(int column, int count, const QModelIndex &parent = QModelIndex())
Переопределяет: QAbstractItemModel::insertColumns(int column, int count, const QModelIndex &parent).
[override virtual] bool QSortFilterProxyModel::insertRows(int row, int count, const QModelIndex &parent = QModelIndex())
Переопределяет: QAbstractItemModel::insertRows(int row, int count, const QModelIndex &parent).
[protected, since 6.0] void QSortFilterProxyModel::invalidateColumnsFilter()
Отменяет текущий фильтр для столбцов.
Эта функция должна быть вызвана, если вы реализуете пользовательский фильтр (с помощью filterAcceptsColumn()), и параметры фильтра изменились. Это отличается от invalidateFilter() тем, что она не вызовет filterAcceptsRow(), а только filterAcceptsColumn(). Вы можете использовать это вместо invalidateFilter(), если хотите скрыть или показать столбец, где строки не меняются.
Эта функция была добавлена в Qt 6.0.
См. также invalidate(), invalidateFilter() и invalidateRowsFilter().
[protected] void QSortFilterProxyModel::invalidateFilter()
Отменяет текущий фильтр.
Эта функция должна быть вызвана, если вы реализуете пользовательский фильтр (например, filterAcceptsRow()), и параметры фильтра изменились.
См. также invalidate(), invalidateColumnsFilter() и invalidateRowsFilter().
[protected, since 6.0] void QSortFilterProxyModel::invalidateRowsFilter()
Отменяет текущий фильтр для строк.
Эта функция должна быть вызвана, если вы реализуете пользовательский фильтр (с помощью filterAcceptsRow()), и параметры фильтра изменились. Это отличается от invalidateFilter() тем, что она не вызовет filterAcceptsColumn(), а только filterAcceptsRow(). Вы можете использовать это вместо invalidateFilter(), если хотите скрыть или показать строку, где столбцы не меняются.
Эта функция была добавлена в Qt 6.0.
См. также invalidate(), invalidateFilter() и invalidateColumnsFilter().
[virtual protected] bool QSortFilterProxyModel::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const
Возвращает true, если значение элемента, на который указывает данный индекс source_left, меньше значения элемента, на который указывает данный индекс source_right, в противном случае возвращает false.
Эта функция используется как оператор < при сортировке и обрабатывает следующие типы QVariant:
- QMetaType::Int
- QMetaType::UInt
- QMetaType::LongLong
- QMetaType::ULongLong
- QMetaType::Float
- QMetaType::Double
- QMetaType::QChar
- QMetaType::QDate
- QMetaType::QTime
- QMetaType::QDateTime
- QMetaType::QString
Любой другой тип будет преобразован в QString с помощью QVariant::toString().
Сравнение QString по умолчанию регистрозависимое; это можно изменить, используя свойство sortCaseSensitivity.
По умолчанию используется Qt::DisplayRole, связанный с QModelIndexеs, для сравнений. Это можно изменить, установив свойство sortRole.
Примечание: Передаваемые индексы соответствуют модели-источнику.
См. также sortRole, sortCaseSensitivity и dynamicSortFilter.
[override virtual] QModelIndex QSortFilterProxyModel::mapFromSource(const QModelIndex &sourceIndex) const
Переопределяет: QAbstractProxyModel::mapFromSource(const QModelIndex &sourceIndex) const.
Возвращает индекс модели в QSortFilterProxyModel, заданный sourceIndex из модели-источника.
См. также mapToSource().
[override virtual] QItemSelection QSortFilterProxyModel::mapSelectionFromSource(const QItemSelection &sourceSelection) const
Переопределяет: QAbstractProxyModel::mapSelectionFromSource(const QItemSelection &sourceSelection) const.
[override virtual] QItemSelection QSortFilterProxyModel::mapSelectionToSource(const QItemSelection &proxySelection) const
Переопределяет: QAbstractProxyModel::mapSelectionToSource(const QItemSelection &proxySelection) const.
[override virtual] QModelIndex QSortFilterProxyModel::mapToSource(const QModelIndex &proxyIndex) const
Переопределяет: QAbstractProxyModel::mapToSource(const QModelIndex &proxyIndex) const.
Возвращает индекс модели-источника, соответствующий заданному proxyIndex из модели сортировки и фильтрации.
См. также mapFromSource().
END_OF_DOCUMENT_MARKER
[override virtual] QModelIndexList QSortFilterProxyModel::match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const
Реализует: QAbstractItemModel::match(const QModelIndex &start, int role, const QVariant &value, int hits, Qt::MatchFlags flags) const.
[override virtual] QMimeData *QSortFilterProxyModel::mimeData(const QModelIndexList &indexes) const
Реализует: QAbstractProxyModel::mimeData(const QModelIndexList &indexes) const.
[override virtual] QStringList QSortFilterProxyModel::mimeTypes() const
Реализует: QAbstractProxyModel::mimeTypes() const.
[override virtual] QModelIndex QSortFilterProxyModel::parent(const QModelIndex &child) const
Реализует: QAbstractItemModel::parent(const QModelIndex &index) const.
[override virtual] bool QSortFilterProxyModel::removeColumns(int column, int count, const QModelIndex &parent = QModelIndex())
Реализует: QAbstractItemModel::removeColumns(int column, int count, const QModelIndex &parent).
[override virtual] bool QSortFilterProxyModel::removeRows(int row, int count, const QModelIndex &parent = QModelIndex())
Реализует: QAbstractItemModel::removeRows(int row, int count, const QModelIndex &parent).
[override virtual] int QSortFilterProxyModel::rowCount(const QModelIndex &parent = QModelIndex()) const
Реализует: QAbstractItemModel::rowCount(const QModelIndex &parent) const.
[override virtual] bool QSortFilterProxyModel::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)
Реализует: QAbstractProxyModel::setData(const QModelIndex &index, const QVariant &value, int role).
См. такжеdata().
[override virtual] bool QSortFilterProxyModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole)
Реализует: QAbstractProxyModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role).
См. такжеheaderData().
[override virtual] void QSortFilterProxyModel::setSourceModel(QAbstractItemModel *sourceModel)
Реализует: QAbstractProxyModel::setSourceModel(QAbstractItemModel *sourceModel).
[override virtual] QModelIndex QSortFilterProxyModel::sibling(int row, int column, const QModelIndex &idx) const
Реализует: QAbstractProxyModel::sibling(int row, int column, const QModelIndex &idx) const.
[override virtual] void QSortFilterProxyModel::sort(int column, Qt::SortOrder order = Qt::AscendingOrder)
Реализует: QAbstractProxyModel::sort(int column, Qt::SortOrder order).
int QSortFilterProxyModel::sortColumn() const
Столбец, используемый для сортировки в данный момент
Возвращает последний использованный столбец сортировки.
Qt::SortOrder QSortFilterProxyModel::sortOrder() const
Порядок, используемый для сортировки в данный момент
Возвращает последний использованный порядок сортировки.
[override virtual] QSize QSortFilterProxyModel::span(const QModelIndex &index) const
Реализует: QAbstractProxyModel::span(const QModelIndex &index) const.
[override virtual] Qt::DropActions QSortFilterProxyModel::supportedDropActions() const
Реализует: QAbstractProxyModel::supportedDropActions() const.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qsortfilterproxymodel.html