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

时间:2017-03-25 15:09:53

标签: pyqt5 qtablewidget qtablewidgetitem

我使用循环将数据放入我的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]返回class' int'的值并且create_dataframe(res)[3][i]返回class' datetime.datetime'的值(比如' 2017-03-25 16:51:24')。问题是:如何通过self.tableView.setSortingEnabled(True)使这些项目正确排序,即不是作为字符串,而是分别作为整数和日期时间?我知道我应该使用setData和Qt.DisplayRole,但是你能用一小段代码给出一个例子吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

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

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设置为表格。