3

QListWidgetでsortItems()を使用しているときに問題が発生します。これが何が起こるかです:

これを変更します:

A z d C E o I

これに:

A C I d e o z

しかし、私はそれをしたい:

A C d e I o z

そのように並べ替えるために変更する方法はありますか?

4

1 に答える 1

11

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

より高度なものについては、QListViewをご覧になることをお勧めします。これは、独自のモデル実装または便利なモデルQStandardItemModelまたはQStringListModelと組み合わせることができます (後者は、あなたのケースでは最もシンプルでエレガントなソリューションになる可能性があります)。並べ替えのために、実際のモデルとビューの間にQSortFilterProxyModelを配置します。

于 2011-12-13T18:21:14.820 に答える