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

2024-05-20 14:17:43 发布

您现在位置:Python中文网/ 问答频道 /正文

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

- TreeWidget
   - step1
       - step1.1
       - step1.2
       - [add sub-step button]
   - step2
       - step2.1
       - [add sub-step button]
   - [add step button]   

因此,当点击“添加子步骤按钮”时,它应该在按钮之前向相关的顶层项添加一个新的子项,这样就可以正常工作了。但是当“添加步骤按钮”被单击时,它应该添加一个顶级项并向其中添加一个子项,其中包含一个新按钮。问题在于为新按钮添加子项。
按钮连接到此插槽:

^{pr2}$

我没有错误消息,但当我单击“添加步骤按钮”时,它只添加顶层项,而不添加包含该按钮的子项。我在qt文档或google上找不到任何原因。
我尝试了什么(但仍然没有在“newStep”中添加一个孩子):

  • 添加“普通子”而不是自定义小部件
  • 使用默认名称,因此无需编辑
  • 添加子项前编辑
  • newStep.addChild(child)替换为self.treeWidget.invisibleRootItem().child(index).addChild(child)
  • 测试将按钮添加到另一个顶层项。例如:self.treeWidget.invisibleRootItem().child(0)(这是有效的)

我使用的是pyside2,它在2018年5月的python解释器中执行(如果这个信息有用的话)

这里有一个git-hub链接,指向我代码的一个简化版本,这样您就可以自己测试:addStepsExample 有人能看到并解释出什么问题吗?在


Tags: selfaddchild编辑step步骤button按钮
1条回答
网友
1楼 · 发布于 2024-05-20 14:17:43

问题其实很简单,当在显示QTreeWidget之后将子项添加到项中时,默认情况下会折叠这些项,因此不会观察到它,解决方案是展开它:

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

相关问题 更多 >