PyQt5 唯一点击的子项

Posted

技术标签:

【中文标题】PyQt5 唯一点击的子项【英文标题】:PyQt5 only child item clicked 【发布时间】:2014-02-14 11:58:56 【问题描述】:

我的问题是: 我有一个带有项目(在窗口左侧)和右侧的 QTextEdit 的 QListWidget

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 - 文本也会出现。 感谢您的帮助,对不起我的英语:)

【问题讨论】:

【参考方案1】:

***项目没有父项,因此您可以这样做:

    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")

【讨论】:

以上是关于PyQt5 唯一点击的子项的主要内容,如果未能解决你的问题,请参考以下文章

如何将 QTreeWidget 的子项设置为在单击其父项时自动选择并突出显示

PyQt5 无需点击任何按钮或点击任何内容即可终止应用程序

PyQt5 按钮点击动画

PyQt5:查找点击了哪个 QPushButton

QFormLayout的PyQt5顶行没有响应鼠标点击

PyQt5中如何获取Listwidget点击项的文本?