PyQT QTreeWidget 迭代

7

我在一个QTreeWidget里有两列,第一列代表了url列表,第二列代表了结果。我已经将url列表加载到第一列中,现在我想要遍历这个列表,在遍历的过程中改变第二列的文本。如何实现?


请问你能给我们展示一下代码吗? - aayoubi
1
如果您只有两列,可以用QTableWidget替换QTreeWidget - reclosedev
1个回答

15

您可以调用QTreeWidget.invisibleRootItem()来获取根项目,然后使用QTreeWidgetItem API迭代遍历项目。

示例:

root = self.treeWidget.invisibleRootItem()
child_count = root.childCount()
for i in range(child_count):
    item = root.child(i)
    url = item.text(0) # text at first (0) column
    item.setText(1, 'result from %s' % url) # update result column (1)

我假设self.treeWidget是由以下内容填充的:

self.treeWidget.setColumnCount(2) # two columns, url result
for i in range(10):
    self.treeWidget.insertTopLevelItem(i, QTreeWidgetItem(QStringList('url %s' % i)))

谢谢,这就是我想知道的 :) - Nuncjo
2
仅通过阅读官方文档来发现这一点实际上是不可行的。迭代树形项目的传统方法是通过 QTreeWidgetItemIterator 帮助类 - 不幸的是,它没有提供仅迭代顶级树形项目的方法,因此在这种常见用例中不适用。我们能否共同承认,Qt API 足够晦涩难懂,如果没有 StackOverflow 的话就毫无用处?(是的。是的,我们可以。 - Cecil Curry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接