排序QTableView QDateTime列而不是字符串排序

时间:2017-09-12 04:36:05

标签: python python-2.7 qt pyqt pyqt4

在我的QtableView中有四列。第0列用于以dd-MM-yyyy 格式的日期。并且其他三列包含字符串,因此对它们排序不是问题(可以使用QSortFilterProxyModel类完成)但是对于col 0我想要从右到左排序(对于升序和降序)。

1 个答案:

答案 0 :(得分:0)

以下是 customSortingModel

的简单示例
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.QDateTime.fromString(dataleft, "d/M/yy").addYears(100)
            dataright = QtCore.QDateTime.fromString(dataright, "d/M/yy").addYears(100)

        return dataleft < dataright