我有一个QTreeWidget,我注意到它具有将列标题从原始位置拖到新位置的功能。我想在应用程序中使用此功能,但当我将列标题拖到新位置时,QTreeWidget似乎不会保留任何QTreeWidgetItems中的列更改。你知道吗
在将标题拖到新位置后,我尝试遍历列并打印出QTreeWidget标题项中每列的文本,但这似乎没有保留任何更改。接下来,我尝试重写QTreeWidget::dropEvent
函数,但是我注意到只有当QTreeWidgetItem被拖到新位置而不是列时,这个函数才被激活。你知道吗
用于打印HeaderItem中每列的文本的调试代码:
column_count = self.ui.treeWidget.headerItem().columnCount()
for ii in range(column_count):
print(self.ui.treeWidget.headerItem().text(ii))
我不需要在发生更改时立即捕捉更改,我只希望能够在这些列拖放之后的某个时间点找到应用于QTreeWidget列的任何更改。我希望上面的调试代码打印出新排序的headerItem列的文本,但它仍然以旧顺序打印头列,然后再将任何列拖到新位置。你知道吗
@G.M.帮助我在评论中指出了正确的方向,以绕过这个问题。 最初,我是用^{} 方法直接访问我的头,但是要获得逻辑索引我需要将头设置为^{} 对象。你知道吗
我创建了一个QHeaderView,启用了它的movable sections功能,并将其设置为我的QTreeWidget的标题:
然后,当我想在进行更改后循环遍历列时,我使用 ^{} 返回的列索引找到了每一列的文本。你知道吗
修改后的调试代码在列中循环,并在用户移动列节后打印出列节的文本,如下所示:
相关问题 更多 >
编程相关推荐