2016-10-21 3 views
-1

내 응용 프로그램에 TreeView가 있습니다. QSortFilterProxyModel에서 상속 된 클래스를 사용하여 표시된 행을 제한합니다. 나는 또한 콤보 상자의 selectedIndex를 기반으로 TreeView에서 항목을 정렬해야합니다. I는 지금까지 무슨 짓을 :Combobox 선택을 기반으로 QSortFilterProxyModel을 사용하여 TreeView 항목을 정렬하는 방법

  1. 콤보 상자 변경 선택한 색인, 나는 sort(0) 함수를 호출 QSortFilterProxyModel로부터 상속 된 클래스에서 함수를 호출합니다. QSortFilterProxyModel로부터 상속 된 클래스에서
  2. , 내가 lessThan 기능을 무시하고 콤보

문제가있는 현재의 선택에 따라 내 논리를 구현, 정렬이 항상 발생하지 않습니다. 앱을 실행하고 콤보 상자에서 항목을 선택하면 트리 항목이 올바르게 정렬됩니다. 하지만 콤보 상자에서 다른 항목을 선택하면 트리가 업데이트되지 않습니다. lessThan 함수가 호출됩니다!

+1

사용중인 코드를 제공해야하며 제공 한 정보로는 문제를 결론 지을 수 없습니다. – Mike

+0

@ 마이크 내가 제공 한 정보가 답변을 알고있는 사람들에게 충분하다고 생각합니다. 보시다시피 케빈은 문제를 이해하고 대답했습니다. –

답변

1

프록시가 동적 정렬/필터로 설정되어있는 경우, 동일한 열과 정렬 방향으로 다시 sort()를 호출해도 아무 일도 일어나지 않습니다. https://code.woboq.org/qt5/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp.html#_ZN21QSortFilterProxyModel4sortEiN2Qt9SortOrderE

QSortFilterProxyModel::invalidate()으로 전화를 걸면 재택 근무을 시작할 수 있습니다.

+0

감사합니다. 제 경우에는 두 작업 모두 정렬 작업에 필요했습니다. QSortFilterProxyModel 클래스의 인스턴스를 만들고 sort()를 호출하기 전에 invalidate()를 호출 할 때 setDynamicSortFilter (false) –

관련 문제