이 페이지에서

FunctionSorter QML Type

SortFilterProxyModel 내의 데이터를 지정된 'compare' 메서드의 평가 결과에 따라 정렬합니다. 더 보기...

Import Statement: import QtQml.Models
Since: Qt 6.10
Inherits:

Sorter

Status: Deprecated since 6.12

이 타입은 QtQml.Models 6.12부터 사용이 권장되지 않습니다. 새로운 코드에서는 이 타입을 사용하지 않는 것을 강력히 권장합니다.

상세 설명

FunctionSorter를 사용하면 지정된 'compare' 메서드를 정의할 수 있으며, 이 메서드는 데이터를 정렬하기 위해 평가됩니다. 이 메서드는 지정된 매개변수 유형의 두 인자(lhs 및 rhs)를 받으며, 평가를 위해 다음과 같이 데이터에 접근할 수 있습니다.

SortFilterProxyModel {
    sourceModel: model
    sorters: [
        FunctionSorter {
            id: functionSorter
            component RoleData: QtObject {
                property real age
            }
            function compare(lhsData: RoleData, rhsData: RoleData) : int {
                return (lhsData.age < rhsData.age) ? -1 : ((lhsData === rhsData.age) ? 0 : 1)
            }
        }
    ]
}

경고: compare 메서드의두 매개변수모두 위 예제에서 lhsData 및 rhsData 와 같이 명시적인 타입 어노테이션을 가져야 하며, 두 어노테이션은 모두 동일한 타입으로 해석되어야 합니다. 매개변수 유형 주석이 없는 일반적인 JavaScript 방식으로 작성된 ` compare ` 메서드(예: ` function compare(lhsData, rhsData) : int { ... }`)는 경고 없이 컴파일되지만, 비교 시 오류가 발생합니다. ` FunctionSorter `는 주석이 달린 유형을 기반으로 ` lhsData ` 및 ` rhsData`에 대해 어떤 종류의 역할 데이터 객체를 인스턴스화하고 채울지 결정합니다. 주석이 없으면 인스턴스화할 대상이 없습니다.

참고: sort 메서드는 더 이상 사용되지 않습니다. 이름을 compare 으로 변경하십시오.

참고: compare 함수는 정확히 두 개의 명시적으로 유형이 주석 처리된 매개변수(유형이 일치해야 함)와 명시적인 : int 반환 유형을 가져야 합니다. 이러한 요구 사항이 충족되지 않으면 정렬기는 경고를 출력하고 조기에 반환합니다.

참고: 지정된 'compare' 메서드 내에서 사용되는 외부 QML 속성이 변경될 때마다사용자는 SortFilterProxyModel::invalidateSorter 를 명시적으로 호출해야 합니다. 이 동작은 암시적 무효화와 마찬가지로 향후 변경될 수 있으므로, 사용자는 SortFilterProxyModel::invalidateSorter 를 명시적으로 호출할 필요가 없을 수도 있습니다.

© 2026 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.