Сортировка QListWidget с помощью sortItems () - PullRequest
2 голосов
/ 13 декабря 2011

У меня проблемы при использовании sortItems () для QListWidget.Вот что происходит:

Изменяет это:

A zd CE o I

на это:

ACI deoz

Но яхотите, чтобы это было:

AC de I oz

Есть ли какой-нибудь способ изменить его, чтобы он был подобным?

1 Ответ

9 голосов
/ 13 декабря 2011

QListWidget использует DisplayRole (текст элемента) для сортировки и вызовов QString :: localeAwareCompare на них. Чтобы переопределить значение по умолчанию, вы можете либо изменить используемый языковой стандарт (см. QLocale ), либо переопределить свой собственный подкласс QListWidgetItem QListWidgetItem :: operator <</a>, и позволить ему выполнить желаемое сравнение.

Для чего-то более продвинутого, я бы посоветовал взглянуть на QListView , который вы можете комбинировать либо с собственной реализацией модели, либо с удобными моделями QStandardItemModel или QStringListModel (последнее может быть самым простым и элегантным решением в вашем случае). Для сортировки вы должны поместить QSortFilterProxyModel между фактической моделью и представлением.

...