2011-12-13 14 views
2

QListWidgetでsortItems()を使用しているときに問題があります。ここでは何が起こるかです:sortItems()を使用したQListWidgetの並べ替え

変更この:

Z D C O I

これまで E:

C I D 電子 o z

しかし、私はそれになりたい:

それはそのように並べ替えるにするために変更する C D 電子 I Z

O任意の方法?

答えて

7

QListWidgetは、並べ替えにDisplayRole(項目のテキスト)を使用し、 QString :: localeAwareCompareを呼び出します。デフォルトをオーバーライドするには、使用するロケールを変更するか(QLocaleを参照)、または独自のQListWidgetItemサブクラスにQListWidgetItem::operator<を再実装して、必要な比較を実行させることができます。より高度なものについては

、私は(後者は、あなたの中で最もシンプルかつエレガントな解決策になる可能性があり、あなたがあなた自身のモデルを実装してやコンビニエンスモデルQStandardItemModelまたはQStringListModelのいずれか組み合わせることができた、QListViewを見て持ってお勧めしたいです場合)。ソートの場合、実際のモデルとビューの間にQSortFilterProxyModelを入れます。

+0

QLocaleで行う方法の小さな例を教えてください。 – Kazuma

関連する問題