PyQT - QTableWidget 在 dragged/moved 列后获得 header 标签

PyQT - QTableWidget get header labels after dragged/moved columns

我有一个 QTable 小部件,其中填充了来自 SQL 的数据 - 我启用了按

对视图中的列重新排序
self.horizontalHeader().setSectionsMovable(True)

为了给用户完美的体验,我创建了很多代码,用户可以通过两个带框的列表来决定他想看哪一列,一个显示 headers 已经在 table可见,另一方面,所有headers可能由SQL Table。用户可以左右切换列并使它们可见或不可见。用户还可以将列表中的元素上下放置,以对列中的 headers 重新排序。对于可见列列表,我必须在 Table 小部件中获得一个包含所有可见 headers 的列表 - 但我只有一个问题: 当用户拖动一个Header like "ID" 到第一个位置时

example

我想将所有 headers 作为 for 循环中的列表获取,

header = self.horizontalHeaderItem(column).text()

将“USERNAME”作为第一列(位置 0),将“ID”作为最后一列(位置 3)。还有

header = self.horizontalHeader().model().headerData(0,Qt.Orientation.Horizontal)

没有区别..

有人有想法吗?

您必须使用逻辑索引进行迭代

header = self.horizontalHeader()
    for col in range(self.columnCount()):
        print(self.horizontalHeaderItem(header.logicalIndex(col)).text())