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

PyQt5-使QTableWidget中的整数和日期正确排序,pyqt5,qtablewidget,qtablewidgetitem,Pyqt5,Qtablewidget,Qtablewidgetitem,我使用循环将数据放入QTableWidget表视图: 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_d

我使用循环将数据放入QTableWidget表视图:

    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]
返回类“int”的值,
create_dataframe(res)[3][i]
返回类“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。在此之后,我可以将项目设置到表中