2013-11-21 6 views
0

데이터를 구현하는 QAbstractTableModel 하위 클래스가 있고 일부 열은 int 및 double입니다. QLocale :: toCurrencyString() 및 QLocale :: toString()을 사용하여 '$'및 ','와 같은 서식 지정 문자를 추가하기 위해 로케일을 기반으로 해당 숫자를 변환합니다. 결과는 문자열이므로 열은 int 또는 double 형식이 아닌 문자열 형식으로 값을 정렬합니다.QAbstractTableModel에서 통화 서식이 지정된 숫자 정렬

QSortFilterProxyModel을 사용하여 열 기반으로 정렬하고 있습니다. 그러나 문자열 형식의 데이터를 가져 와서이를 기반으로 정렬합니다. 데이터에서 int와 double을 형식화하지 않아도 될지도 모릅니다(). 나는 그 값들을 포맷 할 다른 장소를 찾을 수 없었다. 누구든지이 문제를 해결하는 방법을 알고 있습니까?

+0

화폐 간의 커스텀 비교를 지원하기 위해 모델에서'QSortFilterProxyModel :: lessThan()'함수를 오버라이드하려고 했습니까? – vahancho

+0

나는 그렇지 않았다. 통화 서식이 지정된 문자열을 다시 복식으로 변환 한 다음 비교하는 것입니까? – Alex

+0

예, 그렇게해야한다고 생각합니다. – vahancho

답변

0

QAbstractTableModel 구현이 Qt :: DisplayRole에 대한 문자열과 Qt :: EditRole에 대한 원시 이중을 반환하도록해야합니다.

그런 다음 QSortFilterProxyModel에서 setSortRole(Qt::EditRole)을 호출하십시오.

이 방법이 가장 쉬운 방법은 아니지만 Qt의 디자인 철학과 가장 관련이 있다고 생각합니다.

+0

그 덕분에, 고마워! – Alex