我的问题是: 我有一个带有项目的QListWidget(在窗口的左侧)和右侧的QTextEdit
items textEdit
-item1
---subitem1
---subitem2
-item2
---subitem1
---subitem2
我像这样填写listWidget:
for name in names:
item = QtWidgets.QTreeWidgetItem([name])
self.treeWidget.addTopLevelItem(item)
for cmd in description:
item2 = QtWidgets.QTreeWidgetItem([cmd])
item.addChild(item2)
然后我希望如果我在子项目上点击一些文本出现在textEdit中 只有子项才能显示文字。 我写了
self.treeWidget.itemClicked.connect(self.item2Clicked)
....
def item2Clicked(self, item, column):
self.textEdit.insertPlainText("hello")
但这不对,因为如果我点击item1 - 文字也会出现。 感谢您的帮助,对不起我的英语:)
答案 0 :(得分:0)
顶级项目没有父级,因此您可以这样做:
def item2Clicked(self, item, column):
if item.parent() is not None:
self.textEdit.insertPlainText("hello")
更一般地说,您可以为构造函数中的每个项目设置type:
item = QtWidgets.QTreeWidgetItem([name], 1)
self.treeWidget.addTopLevelItem(item)
for cmd in description:
item2 = QtWidgets.QTreeWidgetItem([cmd], 2)
然后执行:
def item2Clicked(self, item, column):
if item.type() == 2:
self.textEdit.insertPlainText("hello")