如何在未通过.addTopLevelItem()添加到TreeWidget的情况下设置Item Widget?
每个 QTreeWidgetItem
的列项都是用 QComboBox
填充的。
假设我创建了一个 QTreeWidgetItem
:
tree=QtGui.QTreeWidget()
treeItem=QtGui.QTreeWidgetItem()
tree.addTopLevelItem(treeItem)
for i in range(10):
tree.setItemWidget(item, i, QtGui.QComboBox())
现在,如果我把 tree.addTopLevelItem(treeItem)
这一行注释掉,那么就不会有下拉框(combobox)被添加到这个 QTreeWidgetItem
中。换句话说,我必须把 QTreeWidgetItem
加入到树形结构中,才能往这个项里添加 QComboBox
。但是在创建 QTreeWidgetItem
的时候,我并不知道它会成为一个顶级项(topLevelItem),还是会作为子项被添加到另一个顶级项下。
我是不是应该直接把这个项当作顶级项添加到树里,然后再把它重新分配为子项呢?我应该用什么方法把一个顶级项变成另一个顶级项的子项呢?
1 个回答
1
在 QTreeWidget
中创建数据有很多种方法。我个人喜欢的方式是使用 QtGui.QTreeWidgetItem
的构造函数,这样可以直接把它连接到根项目,而不需要使用 QTreeWidget.addTopLevelItem
,我建议大家不要用这个方法。
下面是一个例子:
myQTreeWidget = QtGui.QTreeWidget()
listsHeader = ['A', 'B', 'C']
myQTreeWidget.setHeaderItem(QtGui.QTreeWidgetItem(listsHeader))
dataQTreeWidgetItem = QtGui.QTreeWidgetItem(myQTreeWidget) # assgin QTreeWidget
for i in range(len(listsHeader)):
dataQTreeWidgetItem.setText(0, 'INDEX ' + str(i)) # Test text in column
myQTreeWidget.setItemWidget(dataQTreeWidgetItem, i, QtGui.QComboBox())
参考链接 : http://pyqt.sourceforge.net/Docs/PyQt4/qtreewidgetitem.html#QTreeWidgetItem-3
编辑于 2014年7月8日 0:50 在列表中添加头部。
祝好,