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

时间:2017-09-05 11:14:09

标签: python qt pyqt pyqt5 qtreewidget

我正在尝试在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)

使用此代码,它会显示树,但不会显示使用setItemWidget函数添加的QSpinBox小部件。

谢谢!

1 个答案:

答案 0 :(得分:2)

根据docs

  

void QTreeWidget :: setItemWidget(QTreeWidgetItem * item,int column,   QWidget *小部件)

     

设置要在由指定的单元格中显示的给定窗口小部件   给定项目和专栏。

     

[...]

首先应该添加项目,然后在特定列中添加小部件,例如我们将项目添加到顶部,然后将其放在第二列中:

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

enter image description here