只有数字列。但这有点像:
以及这部分代码的样子:
self.table = QTableWidget(self)
self.table.setColumnCount(5)
self.table.setRowCount(0)
self.table.setSortingEnabled(True)
self.table.sortByColumn(1, Qt.DescendingOrder)
并且不仅有4或5行,它不能是10,100或更多,因为我有一个按钮可以在此第一列中插入具有自定义编号的行。还有一些按钮可以编辑此列中的项目(但仍然只有数字)
如果将项目数据作为文本字符串插入,它们将始终使用字母数字顺序,因此从1到20的数字将按以下顺序排序:
1, 10, 2, 20, 3, 4, ...
为了实现数字排序,必须将数据存储为数字,这可以通过使用setData(role, value)
来完成:
setData(role, value)
或者,您可以继承QTableWidgetItem,如以下答案所示:from random import randrange
class MyWindow(QtWidgets.QWidget):
# ...
def addData(self):
for row in range(10):
item = QtWidgets.QTableWidgetItem()
item.setData(QtCore.Qt.DisplayRole, randrange(10000))
self.table.setItem(row, 1, item)
。