我想在Maya ui的QTreeWidget中放置一个QComboBox。但是,当我尝试这样做时会崩溃。我想知道我在做什么错
我创建了一些代码,并在此处查找了一些解决方案,但是它们要么不起作用,要么用于另一种语言
def populate(self):
rows = len(self.assets)
tw = self.ui.My_QtTreeWidget
assets = self.assets
for i in range(len(assets)):
combox = QtWidgets.QComboBox()
item = QtWidgets.QTreeWidgetItem(tw, [assets[i][0], '2', '3', assets[i][1]])
tw.setItemWidget(item, 1, combox)
预期:将组合框放入第二列
结果:Maya崩溃
答案 0 :(得分:0)
我认为您没有使用QDelegate这类的东西。如果您尝试使用QtreeWidget,则可能必须为QTreeWidgetItem创建一个具有特殊小部件的类。
def initUI(self):
[...]
self.treeWidget = QtWidgets.QTreeWidget()
self.treeWidget.setColumnCount(2)
self.treeWidget.setHeaderLabels(["Name", "ComboChoice"])
[...]
def populate(self):
items = []
for i in range(4):
newItem = SpecialTreeItem(rf, self.tableTree)
items.append(newItem)
self.treeWidget.addTopLevelItems(items)
[...]
class SpecialTreeItem(QtWidgets.QTreeWidgetItem):
'''
Custom QTreeWidgetItem with Widgets
'''
# This variable summerize value to be saved into json
def __init__(self, name, parent):
'''
parent (QTreeWidget) : Item's QTreeWidget parent.
name (str) : Item's name. just an example.
'''
## Init super class ( QtGui.QTreeWidgetItem )
QtWidgets.QTreeWidgetItem.__init__(self, parent)
## Column 0 - Text:
self.setText(1, name)
self.foo= QtWidgets.QComboBox()
_foo = ['test', 'foo', 'apple']
for _f in _foo:
self.cb_rigtype.addItem(_f)
self.foo.setCurrentIndex(0)
self.treeWidget().setItemWidget(self, 1, self.foo)