2011-12-13 4 views
2

QListWidget에서 sortItems()를 사용하는 동안 문제가 있습니다. 여기서 일어나는 것이다 :sortItems()를 사용하여 QListWidget 정렬

변경이 :

Z D C O I

이에 E :

C I D E o z

하지만 난이 원하는 :

C D

어떤 방법이 일종의 그런 식으로 그것을 만들 변경 I Z O를 전자?

답변

7

QListWidget은 정렬을 위해 DisplayRole (항목의 텍스트)을 사용하고 QString :: localeAwareCompare를 호출합니다. 디폴트를 오버라이드 (override)하려면, 사용하는 로케일 (QLocale을 참조)을 변경하는지, 또는 독자적인 QListWidgetItem 서브 클래스를 재 구현해, QListWidgetItem::operator<를 재 실시 해, 원하는 비교를 실시 할 수가 있습니다.

아무것도 들어

고급, 나는 당신이 QStandardItemModel 또는 QStringListModel이 (후자는 가장 간단하고 우아한 해결책이 될 수 중 하나를 자신의 모델을 구현 또는 편의 모델과 결합 할 수있는, QListView 한 번 봐 가지고 좋을 것 당신의 케이스). 정렬을 위해 QSortFilterProxyModel을 실제 모델과 뷰 사이에 넣습니다.

+0

QLocale을 사용하는 간단한 예를 보여줄 수 있습니까? – Kazuma

관련 문제