2012-03-27 7 views
2

私は対応するモデルを持つQTableViewを持っているとしましょう。このビューは数字のみを表示し、異なる列の数値書式が必要です。Qtのモデル/ビューフレームワークに数値書式を追加するにはどうすればよいですか?

いくつかの例:価格列で

  • 私は2つの小数セパレータとしてカンマをしたいです。
  • 長さの欄では、小数点は欲しくないが、私はまだ コンマ区切りを欲しい。
  • 期間列では、価格列と同じ書式を使用しますが、値が負の場合は 赤色です。

これでモデルのデータ関数でこれを行うことができました。 Qt.DisplayRoleは数値書式を扱い、Qt.ForegroundRoleは色付けを処理できます。色付けは意図どおりに機能しますが、このように数値書式を設定するとソートが中断されます。

これを達成するためには、より直接的な方法がありますか?私は私が何を見つけることができるかを知るために周りを探索しましたが、私が後悔していることの良い例は私を逃しています。

答えて

3

QStandardItemModelをモデルとして使用している場合は、の代わりにQt::EditRoleを使用するようにsortRoleを設定できます。

QAbstractItemModelなどを使用している場合は、sortメソッドをオーバーライドして同様の操作を行うことができます。つまり、Qt::EditRoleの値を使用します。モデルの周りにQSortFilterProxyModelをラップし、lessThanメソッドをオーバーライドすることもできます。

+0

前もって 'sortRole'ロールを見たことがありません。それは勝者のように見えます。ありがとう。 – c00kiemonster

関連する問題