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 中删除单元格填充

Qtablewidget 去除黑色空间 PyQt5

如何在 PyQt5 QTableWidget 中获取选定索引中的项目总和

PyQt5-高级控件使用(QTableWidget)

QTableWidget 上的 PYQT5 setCellWidget() 会减慢 UI

如何在 PyQt5 中捕获 QTableWidget 上的左右鼠标单击事件?