简体   繁体   English

在PyQt5中,如何在QTreeWidget单元内添加QSpinBox?

[英]In PyQt5, How to add a QSpinBox inside a QTreeWidget cell?

I'm trying to add a QSpinBox inside some cells of the QTreeWidget tree_parameters. 我试图在QTreeWidget tree_parameters的某些单元格内添加QSpinBox。

l1 = QTreeWidgetItem(["String A", "", ""])
l2 = QTreeWidgetItem(["String AA", "", ""])
for i in range(3):
    l1_child = QTreeWidgetItem(["Child A" + str(i), "Child B" + str(i), "Child C" + str(i)])
    l1.addChild(l1_child)

for j in range(2):
    l2_child = QTreeWidgetItem(["Child AA" + str(j), "Child BB" + str(j), "Child CC" + str(j)])
    l2.addChild(l2_child)

self.tree_parameters.resize(500, 200)
self.tree_parameters.setColumnCount(3)
self.tree_parameters.setHeaderLabels(["Column 1", "Column 2", "Column 3"])
self.tree_parameters.addTopLevelItem(l1)
self.tree_parameters.addTopLevelItem(l2)


item = QTreeWidgetItem()
widget = QSpinBox()
widget.setValue(5)
self.tree_parameters.setItemWidget(item, 1, widget)

With this code it appears the tree, but not the QSpinBox widget added using setItemWidget function. 使用此代码,它显示为树,但不显示使用setItemWidget函数添加的QSpinBox小部件。

Thanks! 谢谢!

According to the docs : 根据文档

void QTreeWidget::setItemWidget(QTreeWidgetItem *item, int column, QWidget *widget) 无效的QTreeWidget :: setItemWidget(QTreeWidgetItem * item,int column,QWidget * widget)

Sets the given widget to be displayed in the cell specified by the given item and column. 设置要在给定项目和列指定的单元格中显示的给定窗口小部件。

[...] [...]

What you should do first is to add the item, and then just add the widget in a specific column, in your case for example we add the item to the top and then place it in the second column: 您首先要做的是添加项目,然后将小部件添加到特定的列中,例如,在您的情况下,我们将项目添加到顶部,然后将其放置在第二列中:

item = QTreeWidgetItem()
self.tree_parameters.addTopLevelItem(item)
widget = QSpinBox()
widget.setValue(5)
self.tree_parameters.setItemWidget(item, 1, widget)

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM