Spec-Zone.ru › Qt

Класс 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)

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

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

Примеры Basic Sort/Filter Model и Custom Sort/Filter Model иллюстрируют, как использовать 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;
    }
}

(Этот фрагмент кода взят из примера 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.

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

[bindable, since 6.0] autoAcceptChildRows : bool

Примечание: Это свойство поддерживает привязки QProperty.

Если true, модель-прокси не будет отфильтровывать потомков принятых строк, даже если они сами были бы отфильтрованы.

Значение по умолчанию — false.

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

См. также recursiveFilteringEnabled и filterAcceptsRow().

[bindable] dynamicSortFilter : bool

Примечание: Это свойство поддерживает привязки QProperty.

Это свойство указывает, динамически ли модель-прокси сортируется и фильтруется всякий раз, когда изменяется содержимое источниковой модели.

Обратите внимание, что при dynamicSortFilter = true вы не должны обновлять исходную модель через модель-прокси. Например, если вы установили модель-прокси для QComboBox, то использование функций, обновляющих модель, например addItem(), не будет работать как ожидается. Альтернативой является установка dynamicSortFilter в false и вызов sort() после добавления элементов в QComboBox.

Значение по умолчанию — true.

[bindable] filterCaseSensitivity : Qt::CaseSensitivity

Примечание: Это свойство поддерживает привязки QProperty.

Это свойство задает чувствительность к регистру шаблона QRegularExpression, используемого для фильтрации содержимого исходной модели.

По умолчанию фильтр чувствителен к регистру.

Примечание: Установка этого свойства распространяет новую чувствительность к регистру на свойство filterRegularExpression, тем самым нарушая его привязку. Аналогично, явное изменение filterRegularExpression изменяет текущую чувствительность к регистру, нарушая привязку.

См. также filterRegularExpression и sortCaseSensitivity.

[bindable] filterKeyColumn : int

Примечание: Это свойство поддерживает привязки QProperty.

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

Значение по умолчанию — 0. Если значение равно -1, ключи будут считываться из всех столбцов.

[bindable, since 5.12] filterRegularExpression : QRegularExpression

Примечание: Это свойство поддерживает привязки QProperty.

Это свойство содержит QRegularExpression, используемую для фильтрации содержимого исходной модели.

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

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

Примечание: Установка этого свойства распространяет чувствительность к регистру нового регулярного выражения на свойство filterCaseSensitivity, тем самым нарушая его привязку. Аналогично, явное изменение filterCaseSensitivity изменяет чувствительность к регистру текущего регулярного выражения, тем самым нарушая его привязку.

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

См. также filterCaseSensitivity, setFilterWildcard() и setFilterFixedString().

[bindable] filterRole : int

Примечание: Это свойство поддерживает привязки QProperty.

Это свойство содержит роль элемента, которая используется для запроса данных исходной модели при фильтрации элементов.

Значение по умолчанию — Qt::DisplayRole.

См. также filterAcceptsRow().

[bindable] isSortLocaleAware : bool

Примечание: Это свойство поддерживает привязки QProperty.

Это свойство содержит значение, определяющее, учитывает ли сортировка особенности локали при сравнении строк.

По умолчанию сортировка не учитывает локаль.

См. также sortCaseSensitivity и lessThan().

[bindable, since 5.10] recursiveFilteringEnabled : bool

Примечание: Это свойство поддерживает привязки QProperty.

Это свойство определяет, применяется ли фильтр рекурсивно к потомкам, и для каждого подходящего потомка, его родители также будут видимы.

Значение по умолчанию — false.

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

См. также autoAcceptChildRows и filterAcceptsRow().

[bindable] sortCaseSensitivity : Qt::CaseSensitivity

Примечание: Это свойство поддерживает привязки QProperty.

Это свойство задаёт чувствительность к регистру при сравнении строк во время сортировки.

По умолчанию сортировка чувствительна к регистру.

См. также filterCaseSensitivity и lessThan().

[bindable] sortRole : int

Примечание: Это свойство поддерживает привязки QProperty.

Это свойство содержит роль элемента, используемую для запроса данных исходной модели при сортировке элементов.

Значение по умолчанию — Qt::DisplayRole.

См. также 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.

Этот метод сбросит параметры регулярного выражения, но сохранит чувствительность к регистру.

Примечание: Вызов этого метода обновляет регулярное выражение, тем самым нарушая привязку для filterRegularExpression. Однако он не оказывает влияния на привязки filterCaseSensitivity.

См. также setFilterCaseSensitivity(), setFilterRegularExpression(), setFilterWildcard(), и filterRegularExpression().

[slot, since 5.12] void QSortFilterProxyModel::setFilterRegularExpression(const QString &pattern)

Устанавливает регулярное выражение, используемое для фильтрации содержимого исходной модели, на pattern.

Этот метод следует предпочитать для нового кода, так как он будет использовать QRegularExpression внутри.

Этот метод сбросит опции регулярного выражения, но сохранит регистрозависимость.

Примечание: Вызов этого метода обновляет регулярное выражение, тем самым разрывая привязку для filterRegularExpression. Однако это не повлияет на привязки filterCaseSensitivity.

Примечание: Метод-сеттер для свойства filterRegularExpression.

Эта функция была добавлена в Qt 5.12.

См. также setFilterCaseSensitivity(), setFilterWildcard(), setFilterFixedString(), и filterRegularExpression().

[slot] void QSortFilterProxyModel::setFilterWildcard(const QString &pattern)

Устанавливает выражение с подстановочными знаками, используемое для фильтрации содержимого исходной модели, на заданный pattern.

Этот метод сбросит опции регулярного выражения, но сохранит регистрозависимость.

Примечание: Вызов этого метода обновляет регулярное выражение, тем самым разрывая привязку для filterRegularExpression. Однако это не повлияет на привязки filterCaseSensitivity.

См. также 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).

END_OF_DOCUMENT_MARKER

[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().

[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.2/qsortfilterproxymodel.html

Spec-Zone.ru

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