我使用循环将数据放入我的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,但是你能用一小段代码给出一个例子吗?
谢谢。
答案 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设置为表格。