QtSortFilterProxyModel类

QtSortFilterProxyModel类提供了在另一个模型和视图之间传递的数据的排序和过滤的支持。[更多信息](#details)

头文件 #include <QSortFilterProxyModel>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core
继承 QAbstractProxyModel

属性

公共函数

QSortFilterProxyModel(QObject *parent = nullptr)
virtuall~QSortFilterProxyModel()
boolautoAcceptChildRows() const
QBindable<bool>bindableAutoAcceptChildRows()
QBindable<bool>bindableDynamicSortFilter()
QBindable<Qt::CaseSensitivity>bindableFilterCaseSensitivity()
QBindable<int>bindableFilterKeyColumn()
QBindable<QRegularExpression>bindableFilterRegularExpression()
QBindable<int>bindableFilterRole()
QBindable<bool>bindableIsSortLocaleAware()
QBindable<bool>bindableRecursiveFilteringEnabled()
QBindable<Qt::CaseSensitivity>bindableSortCaseSensitivity()
QBindable<int>bindableSortRole()
booldynamicSortFilter() const
Qt::CaseSensitivityfilterCaseSensitivity() const
intfilterKeyColumn() const
QRegularExpressionfilterRegularExpression() const
intfilterRole() const
boolisRecursiveFilteringEnabled() const
boolisSortLocaleAware() const
voidsetAutoAcceptChildRows(bool accept)
voidsetDynamicSortFilter(bool enable)
voidsetFilterCaseSensitivity(Qt::CaseSensitivity cs)
voidsetFilterKeyColumn(int column)
voidsetFilterRole(int role)
voidsetRecursiveFilteringEnabled(bool recursive)
voidsetSortCaseSensitivity(Qt::CaseSensitivity cs)
voidsetSortLocaleAware(bool on)
voidsetSortRole(int role)
Qt::CaseSensitivitysortCaseSensitivity() const
intsortColumn() const
Qt::SortOrdersortOrder() const
intsortRole() const

重写的公共函数

virtual QModelIndexbuddy(const QModelIndex &index) const override
virtual boolcanFetchMore(const QModelIndex &parent) const override
virtual intcolumnCount(const QModelIndex &parent = QModelIndex()) const override
virtual QVariantdata(const QModelIndex &index, int role = Qt::DisplayRole) const override
virtual booldropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
virtual voidfetchMore(const QModelIndex &parent) override
virtual Qt::ItemFlagsflags(const QModelIndex &index) const override
virtual boolhasChildren(const QModelIndex &parent = QModelIndex()) const override
virtual QVariantheaderData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override
virtual QModelIndexindex(int row, int column, const QModelIndex &parent = QModelIndex()) const override
virtual boolinsertColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override
virtual boolinsertRows(int row, int count, const QModelIndex &parent = QModelIndex()) override
virtual QModelIndexmapFromSource(const QModelIndex &sourceIndex) const override
virtual QItemSelectionmapSelectionFromSource(const QItemSelection &sourceSelection) const override
virtual QItemSelectionmapSelectionToSource(const QItemSelection &proxySelection) const override
virtual QModelIndexmapToSource(const QModelIndex &proxyIndex) const override
virtual QModelIndexListmatch(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const override
virtual QMimeData *mimeData(const QModelIndexList &indexes) const override
virtual QStringListmimeTypes() const override
virtual QModelIndexparent(const QModelIndex &child) const override
virtual boolremoveColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override
virtual boolremoveRows(int row, int count, const QModelIndex &parent = QModelIndex()) override
virtual introwCount(const QModelIndex &parent = QModelIndex()) const override
virtual boolsetData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override
virtual boolsetHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole) override
virtual voidsetSourceModel(QAbstractItemModel *sourceModel) override
virtual QModelIndex brothers (int row, int column, const QModelIndex &idx) const override
virtual void排序 (int column, Qt::SortOrder order = Qt::AscendingOrder) override
虚 QSize跨度 (const QModelIndex &index) const override
虚 Qt::DropActions支持的操作 () const override

公共槽

void无效化()
void设置过滤器固定字符串 (const QString &pattern)
void设置过滤器正则表达式 (const QString &pattern)
void过滤器正则表达式属性 (const QRegularExpression &regularExpression)
void设置过滤器通配符 (const QString &pattern)

信号

(自6.0起) void自动接受子行更改 (bool autoAcceptChildRows)
void过滤器大小写敏感性更改 (Qt::CaseSensitivity filterCaseSensitivity)
void过滤器作用域更改 (int filterRole)
void递归过滤启用更改 (bool recursiveFilteringEnabled)
void排序大小写敏感性更改 (Qt::CaseSensitivity sortCaseSensitivity)
void排序语言环境更改 (bool sortLocaleAware)
void排序作用域更改 (int sortRole)

受保护的函数

virtual bool过滤器接受列 (int source_column, const QModelIndex &source_parent) const
virtual bool过滤器接受行 (int source_row, const QModelIndex &source_parent) const
(自6.0起) void无效化列过滤器()
void无效化过滤器()
(自6.0起) void无效化行过滤器()
virtual bool比较 (const QModelIndex &source_left, const QModelIndex &source_right) const

详细说明

QSortFilterProxyModel可用于排序项、过滤项或两者都行。模型通过将提供的模型索引映射到新索引来转换源模型的结构,新索引对应于不同的位置,以便视图使用。这种方法允许在视图方面重新结构化给定源模型,而不需要对底层数据进行任何转换,也不需要内存中重复数据。

假设我们想要对自定义模型提供的项进行排序和过滤。没有排序和过滤的模型和视图设置的代码如下

        QTreeView *treeView = new QTreeView;
        MyItemModel *model = new MyItemModel(this);

        treeView->setModel(model);

为了向MyItemModel添加排序和过滤支持,我们需要创建一个QSortFilterProxyModel,使用MyItemModel作为参数调用setSourceModel(),并在视图中安装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 为默认) 的项目上,并且理解多种数据类型,包括 intQStringQDateTime。对于层次模型,排序将递归地应用于所有子项。字符串比较默认区分大小写;可以通过设置 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;
    }
}

(此代码片段来自 自定义排序/过滤模型示例。)

另一种排序的方法是在视图中禁用排序,并强制用户按照某种特定的顺序排序。这是通过在 QSortFilterProxyModel 上显式调用 sort() 并传递所需的列和顺序作为参数来实现的(如果原始模型实现了 sort(),则在原始模型上)。例如

        proxyModel->sort(2, Qt::AscendingOrder);

可以通过列 -1 来排序 QSortFilterProxyModel,在这种情况下,它将返回到基础源模型的排序顺序。

过滤

除了排序之外,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());
}

(此代码片段来自 自定义排序/过滤模型示例。)

如果您在进行大量过滤操作时需要重复调用invalidateFilter(),根据您模型的实现,使用beginResetModel() / endResetModel()可能会更高效。然而,beginResetModel() / endResetModel()会将代理模型返回到原始状态,丢失选择信息,并可能导致代理模型重新填充。

继承自

由于QAbstractProxyModel及其子类是从QAbstractItemModel派生的,因此许多关于子类化常规模型的建议也适用于代理模型。此外,值得注意的是,此类中许多函数的默认实现都是为了调用相关源模型中的等效函数编写的。对于具有更复杂行为的源模型,这种简单的代理机制可能需要被重写;例如,如果源模型提供了一个自定义的hasChildren()实现,您也应该在代理模型中提供。

注意:有关子类化模型的某些一般性指南可在模型子类化参考中找到。

另请参阅QAbstractProxyModelQAbstractItemModel模型/视图编程基本排序/过滤模型示例自定义排序/过滤模型示例QIdentityProxyModel

属性文档

[可绑定,自 6.0 版起] autoAcceptChildRows : bool

注意:此属性支持QProperty绑定。

如果为真,则代理模型不会过滤出被接收的行的子项,即使它们本身可能被过滤掉。

默认值为false。

此属性是从Qt 6.0版开始引入的。

另请参阅recursiveFilteringEnabledfilterAcceptsRow

[可绑定] dynamicSortFilter : bool

注意:此属性支持QProperty绑定。

此属性表示代理模型是否在源模型的内容更改时动态排序和过滤

请注意,当dynamicSortFilter为true时,您不应该通过代理模型更新源模型。例如,如果在一个QComboBox上设置了代理模型,那么使用如addItem()之类的更新模型的功能将无法按预期工作。一种替代方法是设置dynamicSortFilter为false,并在向QComboBox添加项目后调用sort()。

默认值是true。

另请参阅sortColumn

[可绑定] filterCaseSensitivityQt::CaseSensitivity

注意:此属性支持QProperty绑定。

该属性保存用于过滤源模型内容的QRegularExpression模式的灵敏度。

默认情况下,过滤是区分大小写的。

注意:设置此属性会将新的灵敏度传播到filterRegularExpression属性,并因此破坏其绑定。类似地,明确设置filterRegularExpression会改变当前的灵敏度,从而破坏其绑定。

另请参阅filterRegularExpressionsortCaseSensitivity

[可绑定] filterKeyColumnint

注意:此属性支持QProperty绑定。

该属性保存用于从源模型内容中读取的键所在的列。

默认值为0。如果值为-1,则从所有列中读取键。

[可绑定] filterRegularExpressionQRegularExpression

注意:此属性支持QProperty绑定。

该属性保存用于过滤源模型内容的QRegularExpression

通过QRegularExpression重载设置此属性将覆盖当前的filterCaseSensitivity。默认情况下,QRegularExpression为空字符串,匹配所有内容。

如果没有设置QRegularExpression或空字符串,则接受源模型中的所有内容。

注意:设置此属性会将新正则表达式的灵敏度传播到filterCaseSensitivity属性,并因此破坏其绑定。类似地,明确设置filterCaseSensitivity将改变当前正则表达式的灵敏度,从而破坏其绑定。

另请参阅filterCaseSensitivitysetFilterWildcardsetFilterFixedString

[可绑定] filterRoleint

注意:此属性支持QProperty绑定。

该属性保存用于在过滤项目时查询源模型数据的项角色。

默认值是Qt::DisplayRole

另请参阅filterAcceptsRow

[可绑定] isSortLocaleAwarebool

注意:此属性支持QProperty绑定。

该属性保存用于排序时比较字符串的本地灵敏度设置。

默认情况下,排序不是本地灵敏度。

另请参阅 sortCaseSensitivitylessThan()。

[可绑定] recursiveFilteringEnabled : bool

注意:此属性支持QProperty绑定。

此属性包含是否递归地对子组件应用过滤器,以及对于任何匹配的子组件,其父组件也将可见。

默认值为false。

另请参阅 autoAcceptChildRowsfilterAcceptsRow()。

[可绑定] sortCaseSensitivity : Qt::CaseSensitivity

注意:此属性支持QProperty绑定。

此属性包含在排序时用于比较字符串时使用的敏感设置

默认情况下,排序是区分大小写的。

另请参阅 filterCaseSensitivitylessThan()。

[可绑定] sortRole : int

注意:此属性支持QProperty绑定。

此属性包含用于在排序项时查询源模型数据的项角色。

默认值是Qt::DisplayRole

另请参阅 lessThan()。

成员函数文档

[显式] QSortFilterProxyModel::QSortFilterProxyModel(QObject *parent = nullptr)

构建具有特定 parent 的排序过滤器模型。

[虚拟 noexcept] QSortFilterProxyModel::~QSortFilterProxyModel()

销毁此排序过滤器模型。

[信号,自6.0起] void QSortFilterProxyModel::autoAcceptChildRowsChanged(bool autoAcceptChildRows)

当自动接受子行属性的值发生变化时发出此信号。

注意:属性 autoAcceptChildRows 的通知信号。

此功能自 Qt 6.0 开始引入。

另请参阅 autoAcceptChildRows

[重写虚拟] QModelIndex QSortFilterProxyModel::buddy(const QModelIndex &index) const

重新实现了:QAbstractProxyModel::buddy(const QModelIndex &index) const.

[重写虚拟] bool QSortFilterProxyModel::canFetchMore(const QModelIndex &parent) const

重新实现了:QAbstractProxyModel::canFetchMore(const QModelIndex &parent) const.

[重写虚拟] int QSortFilterProxyModel::columnCount(const QModelIndex &parent = QModelIndex()) const

重新实现了:QAbstractItemModel::columnCount(const QModelIndex &parent) const.

[重写虚拟] QVariant QSortFilterProxyModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const

重新实现了:QAbstractProxyModel::data(const QModelIndex &proxyIndex, int role) const.

也请参见 setData().

[覆盖虚函数] 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).

[覆盖虚函数] void QSortFilterProxyModel::fetchMore(const QModelIndex &parent)

重实现: QAbstractProxyModel::fetchMore(const QModelIndex &parent).

[虚拟受保护] bool QSortFilterProxyModel::filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const

如果给定 source_columnsource_parent 指示的列中的项应包含在模型中,则返回 true;否则返回 false

注意:默认实现始终返回 true。您必须重写此方法才能获得描述的行为。

也请参见 filterAcceptsRow()、setFilterFixedString()、setFilterRegularExpression() 和 setFilterWildcard().

[虚拟受保护] bool QSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const

如果给定 source_rowsource_parent 指示的行中的项应包含在模型中,则返回 true;否则返回 false。

默认实现如果相关项的值与过滤器字符串、通配符字符串或正则表达式匹配,则返回 true

注意:默认情况下,使用 Qt::DisplayRole 确定行是否应接受。可以通过设置 filterRole 属性来更改此设置。

也请参见 filterAcceptsColumn()、setFilterFixedString()、setFilterRegularExpression() 和 setFilterWildcard().

[信号] void QSortFilterProxyModel::filterCaseSensitivityChanged(Qt::CaseSensitivity filterCaseSensitivity)

当过滤器的区分大小写更改到 filterCaseSensitivity 时,会发出此信号。

注意:属性 filterCaseSensitivity 的通知器信号。

[信号] void QSortFilterProxyModel::filterRoleChanged(int filterRole)

当过滤器角色更改到 filterRole 时,会发出此信号。

注意: 属性 filterRole 的通知信号。

[重载虚函数] Qt::ItemFlags QSortFilterProxyModel::flags(const QModelIndex &index) const

重实现了: QAbstractProxyModel::flags(const QModelIndex &index) const.

[重载虚函数] bool QSortFilterProxyModel::hasChildren(const QModelIndex &parent = QModelIndex()) const

重实现了: QAbstractProxyModel::hasChildren(const QModelIndex &parent) const.

[重载虚函数] QVariant QSortFilterProxyModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const

重实现了: QAbstractProxyModel::headerData(int section, Qt::Orientation orientation, int role) const.

另请参阅 setHeaderData().

[重载虚函数] QModelIndex QSortFilterProxyModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const

重实现了: QAbstractItemModel::index(int row, int column, const QModelIndex &parent) const.

[重载虚函数] bool QSortFilterProxyModel::insertColumns(int column, int count, const QModelIndex &parent = QModelIndex())

重实现了: QAbstractItemModel::insertColumns(int column, int count, const QModelIndex &parent).

[重载虚函数] bool QSortFilterProxyModel::insertRows(int row, int count, const QModelIndex &parent = QModelIndex())

重实现了: QAbstractItemModel::insertRows(int row, int count, const QModelIndex &parent).

[槽函数] void QSortFilterProxyModel::invalidate()

使当前的排序和过滤失效。

另请参阅 invalidateFilter().

[受保护,自6.0版起] void QSortFilterProxyModel::invalidateColumnsFilter()

使当前列的过滤失效。

如果您正实现自定义过滤(通过 filterAcceptsColumn()), 并且您的过滤参数已更改,则应该调用此函数。这与 invalidateFilter() 不同,因为它不会调用 filterAcceptsRow(),而只会调用 filterAcceptsColumn()。如果您想隐藏或显示行不改变的一列,可以使用此函数代替 invalidateFilter()。

此功能自 Qt 6.0 开始引入。

另请参阅 invalidate(),invalidateFilter() 和 invalidateRowsFilter

[保护] void QSortFilterProxyModel::invalidateFilter()

使当前过滤无效。

如果你正在实现自定义过滤(例如,filterAcceptsRow()),并且你的过滤参数已更改,则应调用此函数。

另请参阅 invalidateinvalidateColumnsFilterinvalidateRowsFilter

[保护,自6.0起] void QSortFilterProxyModel::invalidateRowsFilter()

使当前行过滤无效。

如果你正在实现自定义过滤(通过 filterAcceptsRow()),并且你的过滤参数已更改,则应调用此函数。这与 invalidateFilter() 的区别在于它不会调用 filterAcceptsColumn(),而只会调用 filterAcceptsRow()。如果你想根据列不变隐藏或显示行,则可以使用此方法而不是 invalidateFilter()。

此功能自 Qt 6.0 开始引入。

另请参阅 invalidateinvalidateFilterinvalidateColumnsFilter

[虚拟保护] bool QSortFilterProxyModel::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const

如果给定索引 source_left 指向的项目值小于给定索引 source_right 指向的项目值,则返回 true,否则返回 false

此函数用作排序时的 < 操作符,并处理以下 QVariant 类型

任何其他类型都将以 QString 的形式转换,使用 QVariant::toString

默认情况下,QString 的比较是区分大小写的;这可以通过使用 sortCaseSensitivity 属性来更改。

默认情况下,使用与 QModelIndex 相关的 Qt::DisplayRole 进行比较。这可以通过设置 sortRole 属性来更改。

注意: 传入的索引对应于源模型。

另请参阅 sortRolesortCaseSensitivitydynamicSortFilter

[重载虚拟] QModelIndex QSortFilterProxyModel::mapFromSource(const QModelIndex &sourceIndex) const

重实: QAbstractProxyModel::mapFromSource(const QModelIndex &sourceIndex) const

根据从源模型获取的 sourceIndex 返回 QSortFilterProxyModel 中的模型索引。

另请参阅 mapToSource()。

[重写虚函数] QItemSelection QSortFilterProxyModel::mapSelectionFromSource(const QItemSelection &sourceSelection) const

重新实现: QAbstractProxyModel::mapSelectionFromSource(const QItemSelection &sourceSelection) const

[重写虚函数] QItemSelection QSortFilterProxyModel::mapSelectionToSource(const QItemSelection &proxySelection) const

重新实现: QAbstractProxyModel::mapSelectionToSource(const QItemSelection &proxySelection) const

[重写虚函数] QModelIndex QSortFilterProxyModel::mapToSource(const QModelIndex &proxyIndex) const

重新实现: QAbstractProxyModel::mapToSource(const QModelIndex &proxyIndex) const

返回对应于给定 proxyIndex 的排序过滤模型中的源模型索引。

另请参阅 mapFromSource

[重写虚函数] 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

[重写虚函数] QMimeData *QSortFilterProxyModel::mimeData(const QModelIndexList &indexes) const

重新实现: QAbstractProxyModel::mimeData(const QModelIndexList &indexes) const

[重写虚函数] QStringList QSortFilterProxyModel::mimeTypes() const

重新实现: QAbstractProxyModel::mimeTypes() const

[重写虚函数] QModelIndex QSortFilterProxyModel::parent(const QModelIndex &child) const

重新实现: QAbstractItemModel::parent(const QModelIndex &index) const

[信号] void QSortFilterProxyModel::recursiveFilteringEnabledChanged(bool recursiveFilteringEnabled)

当递归过滤设置更改为 recursiveFilteringEnabled 时,会发出此信号。

注意: 通知了属性 recursiveFilteringEnabled 的信号。

[重写虚函数] bool QSortFilterProxyModel::removeColumns(int column, int count, const QModelIndex &parent = QModelIndex())

重写: QAbstractItemModel::removeColumns(int column, int count, const QModelIndex &parent).

[重写虚函数] bool QSortFilterProxyModel::removeRows(int row, int count, const QModelIndex &parent = QModelIndex())

重写: QAbstractItemModel::removeRows(int row, int count, const QModelIndex &parent).

[重写虚函数] int QSortFilterProxyModel::rowCount(const QModelIndex &parent = QModelIndex()) const

重写: QAbstractItemModel::rowCount(const QModelIndex &parent) const.

[重写虚函数] bool QSortFilterProxyModel::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)

重写: QAbstractProxyModel::setData(const QModelIndex &index, const QVariant &value, int role).

另请参阅 data().

[槽函数] void QSortFilterProxyModel::setFilterFixedString(const QString &pattern)

将用于过滤源模型内容的固定字符串设置为给定的 pattern

此方法将重置正则表达式选项,同时尊重大小写敏感性。

注意: 调用此方法会更新正则表达式,从而打破 filterRegularExpression 的绑定。但它对 filterCaseSensitivity 的绑定没有影响。

另请参阅 setFilterCaseSensitivity(),setFilterRegularExpression(),setFilterWildcard() 和 filterRegularExpression().

[槽函数] void QSortFilterProxyModel::setFilterRegularExpression(const QString &pattern)

将用于过滤源模型内容的正则表达式设置为 pattern

对于新代码,应首选此方法,因为它将内部使用 QRegularExpression

此方法将重置正则表达式选项,同时尊重大小写敏感性。

注意: 调用此方法会更新正则表达式,从而打破 filterRegularExpression 的绑定。但它对 filterCaseSensitivity 的绑定没有影响。

注意: 属性 filterRegularExpression 的设置函数。

另请参阅 setFilterCaseSensitivity(),setFilterWildcard(),setFilterFixedString() 和 filterRegularExpression().

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

设置用于过滤源模型内容的通配符表达式为给定的 pattern

此方法将重置正则表达式选项,同时尊重大小写敏感性。

注意: 调用此方法会更新正则表达式,从而打破 filterRegularExpression 的绑定。但它对 filterCaseSensitivity 的绑定没有影响。

另请参阅 setFilterCaseSensitivity(),setFilterRegularExpression(),setFilterFixedString(),以及 filterRegularExpression

[重写虚函数] 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

[重写虚函数] void QSortFilterProxyModel::setSourceModel(QAbstractItemModel *sourceModel)

重新实现: QAbstractProxyModel::setSourceModel(QAbstractItemModel *sourceModel)

[重写虚函数] QModelIndex QSortFilterProxyModel::sibling(int row, int column, const QModelIndex &idx) const

重新实现: QAbstractProxyModel::sibling(int row, int column, const QModelIndex &idx) const

[重写虚函数] void QSortFilterProxyModel::sort(int column, Qt::SortOrder order = Qt::AscendingOrder)

重新实现: QAbstractProxyModel::sort(int column, Qt::SortOrder order)

[信号] void QSortFilterProxyModel::sortCaseSensitivityChanged(Qt::CaseSensitivity sortCaseSensitivity)

当排序的大小写敏感度更改为 sortCaseSensitivity 时,将发出此信号。

注意: 属性 sortCaseSensitivity 的通知信号。

int QSortFilterProxyModel::sortColumn() const

返回当前用于排序的列

这将返回最近使用的排序列。默认值为 -1,表示此代理模型不排序。

另请参阅 sort

[信号] void QSortFilterProxyModel::sortLocaleAwareChanged(bool sortLocaleAware)

当区域设置相关的设置更改为 sortLocaleAware 时,将发出此信号。

注意: 属性 isSortLocaleAware 的通知信号。

Qt::SortOrder QSortFilterProxyModel::sortOrder() const

返回当前使用的排序顺序

这将返回最近使用的排序顺序。默认值为 Qt::AscendingOrder

另请参阅 sort

[信号] void QSortFilterProxyModel::sortRoleChanged(int sortRole)

当排序角色变为 sortRole 时,会发出此信号。

注意:属性 sortRole 的通知器信号。

[重载虚拟] QSize QSortFilterProxyModel::span(const QModelIndex &index) const

重写了:QAbstractProxyModel::span(const QModelIndex &index) const.

[重载虚拟] Qt::DropActions QSortFilterProxyModel::supportedDropActions() const

重写了:QAbstractProxyModel::supportedDropActions() const.

© 2024 Qt公司 Ltd. 本文档中的文档贡献归各自所有者所有。此处提供的文档根据自由软件基金会的出版,并按照 GNU自由文档许可协议版本1.3 的条款进行许可。Qt及其相应标志是芬兰及/或其他国家的Qt公司注册的商标。所有其他商标均为它们各自所有者的财产。