PyQt5 - 使 QTableWidget 中的整数和日期正确排序

PyQt5 - Make integers and dates in QTableWidget properly sortable

我使用循环将数据放入我的 QTableWidget tableView 中:

    for i in range(0, len(res)):

        self.tableView.setItem(i, 2, QTableWidgetItem(str(create_dataframe(res)[2][i])))
        self.tableView.setItem(i, 3, QTableWidgetItem(str(create_dataframe(res)[3][i])))

其中 create_dataframe(res)[2][i] returns class 的值 'int' 和 create_dataframe(res)[3][i] returns class 的值 'datetime.datetime'(例如“2017-03-25 16:51:24”)。问题是:如何使这些项目通过 self.tableView.setSortingEnabled(True) 正确排序,即不是作为字符串,而是分别作为整数和日期时间?我知道我应该使用 setData 和 Qt.DisplayRole,但是你能用这段简短的代码举个例子吗? 谢谢。

好的,这是我自己想出的答案:

self.tableView.setItem(i, 2, QTableWidgetItem(str(create_dataframe(res)[2][i])))
it3 = QTableWidgetItem()
it3.setData(Qt.EditRole, QVariant(create_dataframe(res)[3][i]))
self.tableView.setItem(i, 3, it3)

即无需转换日期时间值:它可以按字符串形式正确排序。至于整数值,我必须创建一个 QTableWidgetItem() 实例,然后使用带有 QVariant 的 .setData。在此之后我可以将 setItem 设置为 table.