Spec-Zone.ru › Qt 6.1

Класс QSortFilterProxyModel

Класс QSortFilterProxyModel предоставляет поддержку сортировки и фильтрации данных, передаваемых между другой моделью и представлением. Подробнее...

Заголовок: #include <QSortFilterProxyModel>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Наследует: QAbstractProxyModel
  • Список всех членов, включая унаследованные

Свойства

  • autoAcceptChildRows : bool
  • dynamicSortFilter : bool
  • filterCaseSensitivity : Qt::CaseSensitivity
  • filterKeyColumn : int
  • filterRegularExpression : QRegularExpression
  • filterRole : int
  • isSortLocaleAware : bool
  • recursiveFilteringEnabled : bool
  • sortCaseSensitivity : Qt::CaseSensitivity
  • sortRole : int

Открытые функции

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)
void setFilterCaseSensitivity(Qt::CaseSensitivity cs)
void setFilterKeyColumn(int column)
void setFilterRole(int role)
void setRecursiveFilteringEnabled(bool recursive)
void setSortCaseSensitivity(Qt::CaseSensitivity cs)
void setSortLocaleAware(bool on)
void setSortRole(int role)
Qt::CaseSensitivity sortCaseSensitivity() const
int sortColumn() const
Qt::SortOrder sortOrder() const
int sortRole() const

Переопределённые открытые функции

виртуальный 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 &regularExpression)
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.

Пример базовой сортировки/фильтрации модели и Пример пользовательской сортировки/фильтрации модели иллюстрируют, как использовать QSortFilterProxyModel для выполнения базовой сортировки и фильтрации, и как подклассировать ее для реализации пользовательского поведения.

Сортировка

QTableView и QTreeView имеют свойство sortingEnabled, которое контролирует, может ли пользователь сортировать представление щелчком по его горизонтальной заголовку. Например:

        treeView->setSortingEnabled(true);

Когда эта функция включена (по умолчанию она выключена), щелчок по заголовку сортирует элементы в соответствии с этим столбцом. Повторные щелчки позволяют пользователю переключаться между возрастающим и убывающим порядком.

A sorted QTreeView

За кулисами представление вызывает виртуальную функцию 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;
    }
}

(Этот фрагмент кода взят из примера Пользовательской сортировки/фильтрации модели.)

Альтернативный подход к сортировке — это отключение сортировки в представлении и навязывание определенного порядка пользователю. Это делается путем явного вызова 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(). Например (из примера Пользовательской сортировки/фильтрации модели), следующая реализация игнорирует свойство 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());
}

(Этот фрагмент кода взят из примера Пользовательской сортировки/фильтрации модели.)

Если вы работаете с большими объемами фильтрации и вам приходится неоднократно вызывать invalidateFilter(), использование beginResetModel() / endResetModel() может быть эффективнее, в зависимости от реализации вашей модели. Однако beginResetModel() / endResetModel() возвращает прокси-модель в ее исходное состояние, теряя информацию о выделении, и заставит прокси-модель быть пересозданной.

Подклассирование

Поскольку QAbstractProxyModel и его подклассы производятся от QAbstractItemModel, большая часть рекомендаций по подклассированию обычных моделей также применима к прокси-моделям. Кроме того, стоит отметить, что многие из функций по умолчанию в этом классе написаны так, что вызывают эквивалентные функции в соответствующей исходной модели. Этот простой механизм проксирования может потребовать переопределения для исходных моделей с более сложным поведением; например, если исходная модель предоставляет пользовательскую реализацию hasChildren(), вы также должны предоставить ее в прокси-модели.

Примечание: Некоторые общие рекомендации по подклассированию моделей доступны в Справочнике по подклассированию моделей.

См. также QAbstractProxyModel, QAbstractItemModel, Программирование моделей/представлений, Пример базовой сортировки/фильтрации модели, Пример пользовательской сортировки/фильтрации модели и QIdentityProxyModel.

Документация свойств

[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, используемую для фильтрации содержимого исходной модели.

Установка этого свойства через перегрузку QRegularExpression перезаписывает текущее значение filterCaseSensitivity. По умолчанию QRegularExpression — пустая строка, соответствующая всему содержимому.

Если установлена пустая QRegularExpression или пустая строка, всё содержимое исходной модели будет принято.

Это свойство было введено в Qt 5.12.

Функции доступа:

QRegularExpression filterRegularExpression() const
void setFilterRegularExpression(const QString &pattern)
void setFilterRegularExpression(const QRegularExpression &regularExpression)

См. также 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, связанный с индексами QModelIndexes. Это можно изменить, установив свойство 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.1/qsortfilterproxymodel.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API