PyQt5 - 使 QTableWidget 中的整数和日期可正确排序
Posted
技术标签:
【中文标题】PyQt5 - 使 QTableWidget 中的整数和日期可正确排序【英文标题】:PyQt5 - Make integers and dates in QTableWidget properly sortable 【发布时间】:2017-03-25 15:09:52 【问题描述】:我使用循环将数据放入我的 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]
返回“int”类的值,create_dataframe(res)[3][i]
返回“datetime.datetime”类的值(如“2017-03-25 16:51:24”)。问题是:如何使这些项目通过self.tableView.setSortingEnabled(True)
正确排序,即不是作为字符串,而是分别作为整数和日期时间?我知道我应该使用 setData 和 Qt.DisplayRole,但是你能举个例子吗?
谢谢。
【问题讨论】:
【参考方案1】:好的,这是我自己想出的答案:
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。在此之后,我可以将项目设置到表中。
【讨论】:
以上是关于PyQt5 - 使 QTableWidget 中的整数和日期可正确排序的主要内容,如果未能解决你的问题,请参考以下文章
从 PyQt5 中的 QTableWidget 中删除单元格填充
如何在 PyQt5 QTableWidget 中获取选定索引中的项目总和