QTableView 排序日期和数值
我有一个表格,里面有一些普通的文字、数字和日期。文字排序没问题,但数字和日期却排序不正确。这是因为这些值被当作字符串处理,而不是整数或日期对象。那我需要做些什么才能让数字和日期正确排序呢?
这个问题是在ItemModel里还是在TableView里呢?我需要创建一个子类吗?
1 个回答
2
感谢M4rtini的帮助,我终于实现了正确的功能。对于那些在这方面遇到困难的人,这里有代码供参考。
self.tableView = QtGui.TableView(self)
self.table_model = QtGui.QStandardItemModel(0, 0)
self.proxyModel = CustomSortingModel(self)
self.proxyModel.setSourceModel(self.table_model)
self.tableView.setModel(self.proxyModel)
class CustomSortingModel(QtGui.QSortFilterProxyModel):
def lessThan(self,left,right):
col = left.column()
dataleft = left.data()
dataright = right.data()
if col == 2:
dataleft = float(dataleft)
dataright = float(dataright)
elif col == 3:
dataleft = QtCore.QDate.fromString(dataleft, "d/M/yy").addYears(100)
dataright = QtCore.QDate.fromString(dataright, "d/M/yy").addYears(100)
return dataleft < dataright