2017-09-05 22 views
0

QTreeWidget tree_parametersのいくつかのセルの内部にQSpinBoxを追加しようとしています。PyQt5では、QTreeWidgetセル内に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ウィジェットは表示されません。

ありがとうございます!

答えて

0

によるとdocs

無効QTreeWidget :: setItemWidget(QTreeWidgetItem *項目、int型の列、 のQWidget *ウィジェット)

が指定したセルに表示されるように与えられたウィジェットを設定します。指定した項目と列の

[...]

あなたが最初にすべきことは、我々が先頭に項目を追加するたとえば、あなたのケースで、項目を追加して、ちょうど特定の列にウィジェットを追加することで、その後、2番目の列にそれを置く:

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

enter image description here

+0

それは働きます!ありがとう!!! – OriolBur

関連する問題