按列排序但使用自定义排序算法?

Sort by column but with custom sorting algorithm?

我在这里找到了 PyQt4 的解决方案: How to sort a QTableWidget with my own code? (我的代码和我需要做的与 link 几乎相同,我使用的是 TableView 和 PySide2)

我必须在这个项目中使用 Pyside2。

相反 self.tableView.sortByColumn(0, Qt.AscendingOrder) 当用户单击列的 header 时,我将如何使用类似 self.tableView.sortByColumn(0, MyCustomSorting) 的内容。

谢谢

在评论中提供的@musicamante 的提示下,我想出了这个问题。 首先,我将 QSortFilterProxyModel 中的 lessThan 方法重新实现为 My_QSortFilterProxyModel

class My_QSortFilterProxyModel(QSortFilterProxyModel):
    def lessThan(self, left, right):
        leftData = self.sourceModel().data(left)
        rightData = self.sourceModel().data(right)

        try:  # For table Nuke scripts)
            if leftData > rightData:
                return False
            else:
                return True

据我了解,这是比较前值和后值(左值和右值),如果是returns True,则先显示leftData,如果是False,则先显示rightData。

后来在我的主 class 中,通常我们分配 self.my_proxy_model = My_QSortFilterProxyModel()