我正在PyQt5中创建一个应用程序,并且有一个QTableWidgetItem,允许用户更改行的顺序:

tableWidget.verticalHeader().setSectionsMovable(True)


我已经将onSectionMoved插槽连接到sectionMoved信号。如果我使用以下命令遍历onSectionMoved内所有行中第一列的内容

for row in range(tableWidget.rowCount()):
    print(tableWidget.item(row, 0).text())


我仍然按旧顺序获取第一列的内容。如何获得新订单中的内容?

编辑

更明确地说:假设我有一张桌子

A AA AAA
B BB BBB
C CC CCC


现在,用户将第一行移到第二行之后:

B BB BBB
A AA AAA
C CC CCC


我的问题是,在onSectionMoved中进行迭代时,仍然会得到A B C而不是B AC。

最佳答案

您必须使用逻辑索引转换行:

header = tableWidget.verticalHeader()
for row in range(tableWidget.rowCount()):
    print(tableWidget.item(header.logicalIndex(row), 0).text())

关于python - sectionMoved事件后如何确定QTableWidget中行的新顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41418409/

10-13 05:47