Как я могу добавить числовые форматы в каркас модели / представления Qt? - PullRequest
2 голосов
/ 28 марта 2012

Допустим, у меня есть QTableView с соответствующей моделью.В этом представлении показаны только цифры, и я хочу использовать разные форматы чисел для разных столбцов.

Некоторые примеры:

  • В столбце цены мне нужны два знака после запятой и запятая в качестве разделителя.
  • В столбце длины я не хочу использовать десятичные дроби, но мне все еще нужен разделитель запятых.
  • В столбце длительности мне нужен тот же формат, что и в столбце цены, но красным цветом, если значение отрицательное.

Теперь я могу сделать это в функции данных модели.Qt.DisplayRole обрабатывает форматирование чисел, а Qt.ForegroundRole может обрабатывать раскраску.Несмотря на то, что раскраска работает так, как задумано, форматирование чисел таким способом нарушает сортировку.

Есть ли более прямой способ добиться этого?Я попытался поискать в Google, чтобы найти то, что смог найти, но хорошие примеры того, что я ищу, ускользают от меня.

1 Ответ

3 голосов
/ 28 марта 2012

Если вы используете QStandardItemModel в качестве модели, вы можете установить sortRole для использования, скажем, Qt::EditRole вместо Qt::DisplayRole.

Если вы используете что-то вроде QAbstractItemModel, вы можете переопределить метод sort и сделать что-то похожее, т.е. использовать значение Qt::EditRole. Вы также можете обернуть QSortFilterProxyModel вокруг своей модели и переопределить метод lessThan.

...