QTableView 排序日期和数值

0 投票
1 回答
1849 浏览
提问于 2025-04-18 05:21

我有一个表格,里面有一些普通的文字、数字和日期。文字排序没问题,但数字和日期却排序不正确。这是因为这些值被当作字符串处理,而不是整数或日期对象。那我需要做些什么才能让数字和日期正确排序呢?

这个问题是在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

撰写回答