QSortFilterProxyModel Class

QSortFilterProxyModel 클래스는 다른 모델과 뷰 간에 전달되는 데이터의 정렬 및 필터링을 지원합니다. 더 보기...

Header: #include <QSortFilterProxyModel>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
상속합니다: QAbstractProxyModel

속성

공용 함수

QSortFilterProxyModel(QObject *parent = nullptr)
virtual ~QSortFilterProxyModel()
bool autoAcceptChildRows() 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()
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

재구현된 공용 함수

virtual QModelIndex buddy(const QModelIndex &index) const override
virtual bool canFetchMore(const QModelIndex &parent) const override
virtual int columnCount(const QModelIndex &parent = QModelIndex()) const override
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override
virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
virtual void fetchMore(const QModelIndex &parent) override
virtual Qt::ItemFlags flags(const QModelIndex &index) const override
virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const override
virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override
virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override
virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override
virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) override
virtual QModelIndex mapFromSource(const QModelIndex &sourceIndex) const override
virtual QItemSelection mapSelectionFromSource(const QItemSelection &sourceSelection) const override
virtual QItemSelection mapSelectionToSource(const QItemSelection &proxySelection) const override
virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const override
virtual QModelIndexList match(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 QStringList mimeTypes() const override
virtual QModelIndex parent(const QModelIndex &child) const override
virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override
virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) override
virtual int rowCount(const QModelIndex &parent = QModelIndex()) const override
virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override
virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole) override
virtual void setSourceModel(QAbstractItemModel *sourceModel) override
virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const override
virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override
virtual QSize span(const QModelIndex &index) const override
virtual Qt::DropActions supportedDropActions() const override

공용 슬롯

void invalidate()
void setFilterFixedString(const QString &pattern)
void setFilterRegularExpression(const QString &pattern)
void setFilterRegularExpression(const QRegularExpression &regularExpression)
void setFilterWildcard(const QString &pattern)

신호

(since 6.0) 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)

보호된 함수

virtual bool filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const
virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
(since 6.0) void invalidateColumnsFilter()
void invalidateFilter()
(since 6.0) void invalidateRowsFilter()
virtual 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을 만들고, 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은 원래 모델의 래퍼 역할을 합니다. 소스 QModelIndexes를 정렬/필터링된 모델 인덱스로 변환하거나 그 반대로 변환해야 하는 경우 mapToSource(), mapFromSource(), mapSelectionToSource() 및 mapSelectionFromSource()를 사용합니다.

참고: 기본적으로 모델은 원본 모델이 변경될 때마다 데이터를 동적으로 다시 정렬하고 다시 필터링합니다. dynamicSortFilter 속성을 설정하여 이 동작을 변경할 수 있습니다.

기본 정렬/필터 모델사용자 지정 정렬/필터 모델 예제에서는 QSortFilterProxyModel을 사용하여 기본 정렬 및 필터링을 수행하는 방법과 이를 서브클래싱하여 사용자 지정 동작을 구현하는 방법을 설명합니다.

Sorting

QTableViewQTreeView 에는 사용자가 뷰의 가로 머리글을 클릭하여 뷰를 정렬할 수 있는지 여부를 제어하는 sortingEnabled 속성이 있습니다. 예를 들어

        treeView->setSortingEnabled(true);

이 기능이 켜져 있으면(기본값은 꺼짐) 머리글 섹션을 클릭하면 해당 열에 따라 항목이 정렬됩니다. 사용자는 반복적으로 클릭하여 오름차순과 내림차순을 번갈아 가며 정렬할 수 있습니다.

A sorted QTreeView

뷰는 이면에서 모델에서 sort() 가상 함수를 호출하여 모델의 데이터 순서를 다시 지정합니다. 데이터를 정렬 가능하게 만들려면 모델에 sort()를 구현하거나 QSortFilterProxyModel을 사용하여 모델을 래핑할 수 있습니다. QSortFilterProxyModel은 항목의 sortRole()(기본적으로Qt::DisplayRole )에서 작동하고 int, QString, QDateTime 등 여러 데이터 유형을 이해하는 일반 sort() 재구현을 제공합니다. 계층적 모델의 경우 정렬은 모든 하위 항목에 재귀적으로 적용됩니다. 문자열 비교는 기본적으로 대소문자를 구분하며 sortCaseSensitivity 속성을 설정하여 변경할 수 있습니다.

사용자 지정 정렬 동작은 항목 비교에 사용되는 lessThan()를 다시 구현하고 QSortFilterProxyModel을 서브클래싱하여 구현할 수 있습니다. 예를 들어

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()를 명시적으로 호출하면 됩니다(또는 원래 모델에서 sort()을 구현하는 경우). 예를 들어

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

열 -1을 기준으로 정렬할 수 있으며, 이 경우 기본 소스 모델의 정렬 순서로 돌아갑니다.

참고: sortColumn()는 가장 최근에 사용된 정렬 열을 반환합니다. 기본값은 -1이며, 이는 이 프록시 모델이 정렬되지 않음을 의미합니다. 또한 sort()는 sortColumn()를 가장 최근에 사용된 정렬 열로 설정합니다.

필터링

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참조하세요 .

속성 문서

[bindable, since 6.0] autoAcceptChildRows : bool

참고: 이 속성은 QProperty 바인딩을 지원합니다.

true이면 프록시 모델은 허용된 행의 자식이 다른 방식으로 필터링되더라도 필터링하지 않습니다.

기본값은 false입니다.

이 프로퍼티는 Qt 6.0에 도입되었습니다.

recursiveFilteringEnabledfilterAcceptsRow()도 참조하십시오 .

[bindable] dynamicSortFilter : bool

참고: 이 속성은 QProperty 바인딩을 지원합니다.

이 속성은 소스 모델의 콘텐츠가 변경될 때마다 프록시 모델이 동적으로 정렬 및 필터링되는지 여부를 보유합니다.

dynamicSortFilter가 true인 경우 프록시 모델을 통해 소스 모델을 업데이트해서는 안 됩니다. 예를 들어 QComboBox 에 프록시 모델을 설정한 경우 addItem() 등 모델을 업데이트하는 함수를 사용하면 예상대로 작동하지 않습니다. 다른 방법은 dynamicSortFilter를 false로 설정하고 QComboBox 에 항목을 추가한 후 sort()를 호출하는 것입니다.

기본값은 true입니다.

sortColumn()도 참조하세요 .

[bindable] filterCaseSensitivity : Qt::CaseSensitivity

참고: 이 속성은 QProperty 바인딩을 지원합니다.

이 속성은 소스 모델의 콘텐츠를 필터링하는 데 사용되는 QRegularExpression 패턴의 대소문자 구분을 유지합니다.

기본적으로 필터는 대소문자를 구분합니다.

참고: 이 속성을 설정하면 filterRegularExpression 속성에 새 대소문자 구분이 전파되므로 해당 바인딩이 깨집니다. 마찬가지로 filterRegularExpression 을 명시적으로 설정하면 현재 대/소문자 구분이 변경되어 바인딩이 깨집니다.

filterRegularExpressionsortCaseSensitivity참조하세요 .

[bindable] filterKeyColumn : int

참고: 이 속성은 QProperty 바인딩을 지원합니다.

이 속성은 소스 모델의 콘텐츠를 필터링하는 데 사용되는 키가 읽혀지는 열을 보유합니다.

기본값은 0입니다. 값이 -1이면 모든 열에서 키를 읽습니다.

[bindable] filterRegularExpression : QRegularExpression

참고: 이 속성은 QProperty 바인딩을 지원합니다.

이 속성은 소스 모델의 콘텐츠를 필터링하는 데 사용되는 QRegularExpression 을 보유합니다.

QRegularExpression 오버로드를 통해 이 속성을 설정하면 현재 filterCaseSensitivity 을 덮어씁니다. 기본적으로 QRegularExpression 은 모든 콘텐츠와 일치하는 빈 문자열입니다.

QRegularExpression 또는 빈 문자열이 설정되지 않은 경우 소스 모델의 모든 콘텐츠가 허용됩니다.

참고: 이 속성을 설정하면 새 정규식의 대소문자 구분이 filterCaseSensitivity 속성으로 전파되므로 바인딩이 끊어집니다. 마찬가지로 filterCaseSensitivity 을 명시적으로 설정하면 현재 정규식의 대소문자 구분이 변경되어 바인딩이 깨집니다.

filterCaseSensitivity, setFilterWildcard() 및 setFilterFixedString()도 참조하세요 .

[bindable] filterRole : int

참고: 이 속성은 QProperty 바인딩을 지원합니다.

이 속성은 항목을 필터링할 때 소스 모델의 데이터를 쿼리하는 데 사용되는 항목 역할을 보유합니다.

기본값은 Qt::DisplayRole 입니다.

filterAcceptsRow()도 참조하세요 .

[bindable] isSortLocaleAware : bool

참고: 이 속성은 QProperty 바인딩을 지원합니다.

이 속성은 정렬 시 문자열 비교에 사용되는 로컬 인식 설정을 보유합니다.

기본적으로 정렬은 로컬을 인식하지 않습니다.

sortCaseSensitivitylessThan()도 참조하세요 .

[bindable] recursiveFilteringEnabled : bool

참고: 이 속성은 QProperty 바인딩을 지원합니다.

이 속성은 필터가 자식에 재귀적으로 적용될지 여부와 일치하는 자식에 대해 해당 부모도 표시할지 여부를 보유합니다.

기본값은 false입니다.

autoAcceptChildRowsfilterAcceptsRow()도 참조하세요 .

[bindable] sortCaseSensitivity : Qt::CaseSensitivity

참고: 이 속성은 QProperty 바인딩을 지원합니다.

이 속성은 정렬 시 문자열 비교에 사용되는 대/소문자 구분 설정을 보유합니다.

기본적으로 정렬은 대소문자를 구분합니다.

filterCaseSensitivitylessThan()도 참조하세요 .

[bindable] sortRole : int

참고: 이 속성은 QProperty 바인딩을 지원합니다.

이 속성은 항목을 정렬할 때 소스 모델의 데이터를 쿼리하는 데 사용되는 항목 역할을 보유합니다.

기본값은 Qt::DisplayRole 입니다.

lessThan()도 참조하세요 .

멤버 함수 문서

[explicit] QSortFilterProxyModel::QSortFilterProxyModel(QObject *parent = nullptr)

주어진 parent 으로 정렬 필터 모델을 구축합니다.

[virtual noexcept] QSortFilterProxyModel::~QSortFilterProxyModel()

이 정렬 필터 모델을 삭제합니다.

[signal, since 6.0] void QSortFilterProxyModel::autoAcceptChildRowsChanged(bool autoAcceptChildRows)

이 신호는 autoAcceptChildRows 속성의 값이 변경될 때 발생합니다.

참고: autoAcceptChildRows 속성에 대한 알림 신호.

이 함수는 Qt 6.0에 도입되었습니다.

autoAcceptChildRows참조하십시오 .

[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

주어진 source_columnsource_parent 로 표시된 열의 항목이 모델에 포함되어야 하는 경우 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.

참고: 기본 구현은 항상 true 을 반환합니다. 설명된 동작을 얻으려면 이 메서드를 다시 구현해야 합니다.

filterAcceptsRow(), setFilterFixedString(), setFilterRegularExpression() 및 setFilterWildcard()도 참조하세요 .

[virtual protected] bool QSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const

주어진 source_rowsource_parent 으로 표시된 행의 항목이 모델에 포함되어야 하는 경우 true 을 반환하고, 그렇지 않으면 false를 반환합니다.

기본 구현은 관련 항목이 보유한 값이 필터 문자열, 와일드카드 문자열 또는 정규식과 일치하는 경우 true 을 반환합니다.

참고: 기본적으로 Qt::DisplayRole 을 사용하여 행을 허용할지 여부를 결정합니다. filterRole 속성을 설정하여 이 값을 변경할 수 있습니다.

filterAcceptsColumn(), setFilterFixedString(), setFilterRegularExpression() 및 setFilterWildcard()도 참조하세요 .

[signal] void QSortFilterProxyModel::filterCaseSensitivityChanged(Qt::CaseSensitivity filterCaseSensitivity)

이 신호는 필터의 대소문자 감도가 filterCaseSensitivity 로 변경될 때 발신됩니다.

참고: 속성 filterCaseSensitivity 에 대한 알림 신호입니다.

[signal] void QSortFilterProxyModel::filterRoleChanged(int filterRole)

이 신호는 필터 역할이 filterRole 로 변경될 때 발생합니다.

참고: 속성에 대한 알림 신호 filterRole.

[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 섹션, Qt::오리엔테이션 방향, int 역할) 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).

[slot] void QSortFilterProxyModel::invalidate()

현재 정렬 및 필터링을 무효화합니다.

invalidateFilter()도 참조하세요 .

[protected, since 6.0] void QSortFilterProxyModel::invalidateColumnsFilter()

열에 대한 현재 필터링을 무효화합니다.

이 함수는 사용자 정의 필터링( filterAcceptsColumn())을 구현 중이고 필터 매개변수가 변경된 경우에 호출해야 합니다. filterAcceptsRow () 대신 filterAcceptsColumn()만 호출한다는 점에서 invalidateFilter()와 다릅니다. 행이 변경되지 않는 열을 숨기거나 표시하려는 경우 invalidateFilter() 대신 이 함수를 사용할 수 있습니다.

이 함수는 Qt 6.0에 도입되었습니다.

invalidate(), invalidateFilter() 및 invalidateRowsFilter()도 참조하세요 .

[protected] void QSortFilterProxyModel::invalidateFilter()

현재 필터링을 무효화합니다.

이 함수는 사용자 정의 필터링(예: filterAcceptsRow())을 구현 중이고 필터 매개변수가 변경된 경우에 호출해야 합니다.

invalidate(), invalidateColumnsFilter() 및 invalidateRowsFilter()도 참조하세요 .

[protected, since 6.0] void QSortFilterProxyModel::invalidateRowsFilter()

행에 대한 현재 필터링을 무효화합니다.

이 함수는 사용자 정의 필터링( filterAcceptsRow())을 구현 중이고 필터 매개변수가 변경된 경우에 호출해야 합니다. filterAcceptsColumn () 대신 filterAcceptsRow()만 호출한다는 점에서 invalidateFilter()와 다릅니다. 열이 변경되지 않는 행을 숨기거나 표시하려는 경우 invalidateFilter() 대신 이 함수를 사용할 수 있습니다.

이 함수는 Qt 6.0에 도입되었습니다.

invalidate(), invalidateFilter() 및 invalidateColumnsFilter()도 참조하세요 .

[virtual protected] bool QSortFilterProxyModel::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const

주어진 인덱스 source_left 가 참조하는 항목의 값이 주어진 인덱스 source_right 가 참조하는 항목의 값보다 작으면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

이 함수는 정렬 시 < 연산자로 사용되며 다음 QVariant 유형을 처리합니다:

다른 유형은 QVariant::toString()를 사용하여 QString 로 변환됩니다.

QString의 비교는 기본적으로 대소문자를 구분하며 sortCaseSensitivity 속성을 사용하여 변경할 수 있습니다.

기본적으로 QModelIndex에 연결된 Qt::DisplayRole 은 비교에 사용됩니다. 이는 sortRole 속성을 설정하여 변경할 수 있습니다.

참고: 전달된 인덱스는 소스 모델에 해당합니다.

sortRole, sortCaseSensitivity, dynamicSortFilter참조하세요 .

[override virtual] QModelIndex QSortFilterProxyModel::mapFromSource(const QModelIndex &sourceIndex) const

재구현합니다: QAbstractProxyModel::mapFromSource(const QModelIndex &sourceIndex) const.

소스 모델에서 sourceIndex 주어진 QSortFilterProxyModel 의 모델 인덱스를 리턴합니다.

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.

[signal] void QSortFilterProxyModel::recursiveFilteringEnabledChanged(bool recursiveFilteringEnabled)

이 신호는 재귀 필터 설정이 recursiveFilteringEnabled 으로 변경될 때 발생합니다.

참고: 속성 recursiveFilteringEnabled 에 대한 알림 신호입니다.

[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 Q모델인덱스 &index, const Q변수 &value, int 역할).

data()도 참조하세요 .

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

소스 모델의 콘텐츠를 필터링하는 데 사용되는 고정 문자열을 지정된 pattern 으로 설정합니다.

이 메서드는 정규식 옵션을 재설정하지만 대소문자 구분을 준수합니다.

참고: 이 메서드를 호출하면 정규식이 업데이트되어 filterRegularExpression 에 대한 바인딩이 깨지지만 filterCaseSensitivity 바인딩에는 영향을 미치지 않습니다.

setFilterCaseSensitivity(), setFilterRegularExpression(), setFilterWildcard() 및 filterRegularExpression()도 참조하세요 .

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

소스 모델의 콘텐츠를 필터링하는 데 사용되는 정규식을 pattern 로 설정합니다.

이 메서드는 내부적으로 QRegularExpression 을 사용하므로 새 코드에 사용하는 것이 좋습니다.

이 메서드는 정규식 옵션을 재설정하지만 대소문자 구분을 준수합니다.

참고: 이 메서드를 호출하면 정규식이 업데이트되어 filterRegularExpression 에 대한 바인딩이 끊어지지만 filterCaseSensitivity 바인딩에는 영향을 미치지 않습니다.

참고: filterRegularExpression 속성에 대한 세터 함수.

setFilterCaseSensitivity(), setFilterWildcard(), setFilterFixedString() 및 filterRegularExpression()도 참조하세요 .

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

소스 모델의 콘텐츠를 필터링하는 데 사용되는 와일드카드 표현식을 지정된 pattern 으로 설정합니다.

이 메서드는 정규식 옵션을 재설정하지만 대소문자 구분을 준수합니다.

참고: 이 메서드를 호출하면 정규식이 업데이트되어 filterRegularExpression 에 대한 바인딩이 깨지지만 filterCaseSensitivity 바인딩에는 영향을 미치지 않습니다.

setFilterCaseSensitivity(), setFilterRegularExpression(), setFilterFixedString() 및 filterRegularExpression()도 참조하세요 .

[override virtual] bool QSortFilterProxyModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole)

재구현합니다: QAbstractProxyModel::setHeaderData(int section, Qt::오리엔테이션 오리엔테이션, 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 에서 column 으로 모델을 정렬합니다. column 가 0보다 작으면, 모델은 주어진 order 에서 소스 모델 행을 기준으로 정렬됩니다.

sortColumn()도 참조하세요 .

[signal] void QSortFilterProxyModel::sortCaseSensitivityChanged(Qt::CaseSensitivity sortCaseSensitivity)

이 신호는 정렬의 대/소문자 구분이 sortCaseSensitivity 으로 변경될 때 발생합니다.

참고: 속성 sortCaseSensitivity 에 대한 알림 신호입니다.

int QSortFilterProxyModel::sortColumn() const

현재 정렬에 사용된 열을 반환합니다.

가장 최근에 사용된 정렬 열을 반환합니다. 기본값은 -1이며, 이는 이 프록시 모델이 정렬하지 않음을 의미합니다.

sort()도 참조하세요 .

[signal] void QSortFilterProxyModel::sortLocaleAwareChanged(bool sortLocaleAware)

이 신호는 로캘 인식 설정이 sortLocaleAware 으로 변경될 때 발생합니다.

참고: 속성에 대한 알림 신호 isSortLocaleAware.

Qt::SortOrder QSortFilterProxyModel::sortOrder() const

현재 정렬에 사용된 순서를 반환합니다.

가장 최근에 사용된 정렬 순서를 반환합니다. 기본값은 Qt::AscendingOrder 입니다.

sort()도 참조하세요 .

[signal] void QSortFilterProxyModel::sortRoleChanged(int sortRole)

이 신호는 정렬 역할이 sortRole 으로 변경될 때 발생합니다.

참고: 속성에 대한 알림 신호 sortRole.

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

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.