我有一个包含一些常规文本,一些数字和日期的表,文本排序很好,但数字和日期不是,这是因为给定的值是一个字符串,而不是int或QDate对象,我需要实现什么才能获得实际的int和实际的QDate项目来正确排序?
是在ItemModel还是在TableView中?我必须继承它吗?
答案 0 :(得分:1)
感谢M4r Tini,我可以实现正确的功能。对于任何与之斗争的人。这是代码。
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