QTableView排序日期和值

时间:2014-05-04 21:44:55

标签: python sorting pyside qtableview

我有一个包含一些常规文本,一些数字和日期的表,文本排序很好,但数字和日期不是,这是因为给定的值是一个字符串,而不是int或QDate对象,我需要实现什么才能获得实际的int和实际的QDate项目来正确排序?

是在ItemModel还是在TableView中?我必须继承它吗?

1 个答案:

答案 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