按列排序但使用自定义排序算法?
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()
。
我在这里找到了 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()
。