Spec-Zone.ru › Qt 6.0

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

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 &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, связанный с 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

Spec-Zone.ru

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