在 PyQt5 中,如何在 QTreeWidget 单元格中添加 QSpinBox?
In PyQt5, How to add a QSpinBox inside a QTreeWidget cell?
我正在尝试在 QTreeWidget 的某些单元格中添加 QSpinBox tree_parameters。
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 小部件。
谢谢!
根据 docs:
void 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.
[...]
您首先应该做的是添加项目,然后将小部件添加到特定列中,例如,在您的情况下,我们将项目添加到顶部,然后将其放在第二列中:
item = QTreeWidgetItem()
self.tree_parameters.addTopLevelItem(item)
widget = QSpinBox()
widget.setValue(5)
self.tree_parameters.setItemWidget(item, 1, widget)
我正在尝试在 QTreeWidget 的某些单元格中添加 QSpinBox tree_parameters。
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 小部件。
谢谢!
根据 docs:
void 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.
[...]
您首先应该做的是添加项目,然后将小部件添加到特定列中,例如,在您的情况下,我们将项目添加到顶部,然后将其放在第二列中:
item = QTreeWidgetItem()
self.tree_parameters.addTopLevelItem(item)
widget = QSpinBox()
widget.setValue(5)
self.tree_parameters.setItemWidget(item, 1, widget)