首页 > 解决方案 > 如何在 QTreeWidget 中获取选定的子索引

问题描述

如何在这样的层次结构中获取所选子项的索引?通过选择名称为“child A”的项目,获取其索引。

if __name__ == '__main__':
    app = 0
    if QApplication.instance():
        app = QApplication.instance()
    else:
        app = QApplication(sys.argv)

    l1 = QTreeWidgetItem(["String A"])
    l2 = QTreeWidgetItem(["String AA"])
    l1_child = QTreeWidgetItem(["Child A"])
    l1.addChild(l1_child)
    l2_child = QTreeWidgetItem(["Child AA"])
    l2.addChild(l2_child)

    w = QWidget()
    w.resize(510, 210)

    tw = QTreeWidget(w)
    tw.resize(500, 200)
    tw.setColumnCount(1)
    tw.setHeaderHidden(True)
    tw.addTopLevelItem(l1)
    tw.addTopLevelItem(l2)
    w.show()
    sys.exit(app.exec_())here

标签: python-3.xpyqt5qtreewidget

解决方案


您的问题似乎令人困惑,但我将逐字分析。

选定的项目是否是另一个项目的子项之间没有区别,如果您想获取选定的项目,那么您有以下选项:

# ...
w.show()

def on_itemSelectionChanged():
    items = tw.selectedItems()
    for it in items:
        print(it.text(0))

tw.itemSelectionChanged.connect(on_itemSelectionChanged)

sys.exit(app.exec_())
# ...
w.show()

def on_selectionChanged():
    indexes = tw.selectedIndexes()
    for index in indexes:
        print(index.data())

tw.selectionModel().selectionChanged.connect(on_selectionChanged)

sys.exit(app.exec_())

推荐阅读