Python QTreeWidgetItem.addChild()不';在某些情况下不起作用?

Python QTreeWidgetItem.addChild()不';在某些情况下不起作用?,python,pyside2,Python,Pyside2,我在向QTreeWidget中的顶级项添加子项时遇到问题。 我有一个QTreeWidget,用户可以在其中单击一个按钮添加名为“步骤”的项目。它只包含两个级别,如下例所示: - TreeWidget - step1 - step1.1 - step1.2 - [add sub-step button] - step2 - step2.1 - [add sub-step button] - [add step

我在向QTreeWidget中的顶级项添加子项时遇到问题。 我有一个QTreeWidget,用户可以在其中单击一个按钮添加名为“步骤”的项目。它只包含两个级别,如下例所示:

- TreeWidget
   - step1
       - step1.1
       - step1.2
       - [add sub-step button]
   - step2
       - step2.1
       - [add sub-step button]
   - [add step button]   
因此,当单击“添加子步骤按钮”时,它应该在按钮本身之前向相关的顶级项添加一个新的子项,并且工作正常。但是当点击“添加步骤按钮”时,它应该添加一个顶级项目,并向其中添加一个子项,其中包含一个新按钮。问题在于为新按钮添加子按钮。
按钮连接到此插槽:

@Slot(int)
def addCustomStep(self, parentIndex):
    newStep = QTreeWidgetItem()
    newStep.setFlags(Qt.ItemIsEnabled | Qt.ItemIsUserCheckable | Qt.ItemIsEditable)
    if parentIndex == -1:
        #add a top-level step with button
        index = self.treeWidget.invisibleRootItem().childCount() - 1
        self.treeWidget.insertTopLevelItem(index, newStep)
        child = QTreeWidgetItem()
        child.setSizeHint(0, QSize(0, CSTM_STEP_WIDGET_HEIGHT))
        child.setFlags(Qt.ItemIsEnabled)
        cstmWidget = CustomStepWidget(self.treeWidget, index) #the button
        cstmWidget.click.connect(self.addCustomStep)
        newStep.addChild(child) #this is the line that doesn't work for some reason
        self.treeWidget.setItemWidget(child, 0, cstmWidget)
    else:
        #add a sub-step to parent
        parentItem = self.treeWidget.invisibleRootItem().child(parentIndex)
        parentItem.insertChild(parentItem.childCount() - 1, newStep)
    self.treeWidget.editItem(newStep, 0)
我没有错误消息,但当我单击“添加步骤按钮”时,它只添加顶级项,而不添加包含该按钮的子项。我在qt文档或谷歌上找不到任何原因。
我尝试过的(但仍然不愿意在“newStep”中添加子项):

  • 添加“普通子项”而不是自定义小部件
  • 使用默认名称,因此无需编辑
  • 在添加子对象之前进行编辑
  • newStep.addChild(child)
    替换为
    self.treeWidget.invisibleRootItem().child(index.addChild)
  • 测试将按钮添加到另一个顶级项。例如:
    self.treeWidget.invisibleRootItem().child(0)
    (有效)
我正在使用pyside2,它正在2018年5月的python解释器中执行(如果此信息有帮助的话)

这里有一个git hub链接,指向my code的简化版本,您可以自己测试:
有人能看到并解释错误吗?

问题非常简单,当显示
QTreeWidget
后将子项添加到项目中时,默认情况下这些子项会折叠,因此无法观察到,解决方案是将其展开:

...
step.addChild(child) #<-- ISN'T THIS SUPPOSED TO WORK??
self.addStepsTW.setItemWidget(child, 0, cstmWidget)
step.setExpanded(True)  #<--
。。。

步骤.addChild(child)#提供一个@eyllanesc我添加了一个示例链接。我会尽量减少它仍然有点。天哪,我怎么能看不到这一点,不知道在不到24小时内!!!我恨我自己。多谢各位@eyllanesc@Gnahahaaa如果我的答案对您有帮助,请不要忘记将其标记为正确,如果您不知道如何做,请查看,这是表示感谢的最佳方式:)