我有两个QTreeWidget
,它们是在Qt Designer中部分创建的,然后在__init__
中使用类似的元素添加了元素:
def Top(n):
return self.ui.tree.topLevelItem(n)
self.ui.tree.setItemWidget(Top(0), 1, self.ui.driver_channel_1_cb)
self.ui.tree.setItemWidget(Top(0), 2, self.ui.driver_channel_2_cb)
self.ui.tree.setItemWidget(Top(1), 1, self.ui.driver_amplitude_1_dsb)
self.ui.tree.setItemWidget(Top(1), 2, self.ui.driver_amplitude_2_dsb)
...
像self.ui.driver_channel_1_cb
这样的元素是预先在Qt Designer中创建的,只是在树内移动,所以我确实有对其的引用。如何摆脱参考并仅通过知道其位置就能获得其价值?
到目前为止,我已经收集了如何获得整行(一个QTreeWidgetItem
),但是我不知道如何访问其列。请查看下面的屏幕截图,尤其是第二棵树。
编辑:基于答案there,我将在此处添加我的解决方案,因为我认为对于新来者来说更容易拥有图片。
对于第一棵树,我们可以像这样访问第n个标签和值:
def Top(n): return self.ui.tree.topLevelItem(n)
Label = Top(n).text(0)
Value_C1 = self.ui.tree.itemWidget(Top(n), 1).value() # or .currentText() for combo boxes.
Value_C2 = self.ui.tree.itemWidget(Top(n), 2).value()
对于第二棵树:
Top = self.ui.other_tree.topLevelItem(0)
Label = Top.child(n).text(0)
Value = self.ui.other_tree.itemWidget(Top.child(n), 1).value()