如果使用.addTopLevelItem()将项目尚未添加到TreeWidget,如何设置项目窗口小部件

时间:2014-08-06 15:07:56

标签: python pyqt

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),则不会将任何组合框添加到QTreeWidgetItem中。换句话说,我必须向树中添加QTreeWidgetItem才能将QComboBox es添加到QTreeWidgetItem。但是在创建QTreeWidgetItem时,我不知道它是否会成为topLevelItem' or if it will be added to another topLevelItem as a child item using。appendRow()`方法。

我应该继续将此项目作为topLevel分配给树,然后将其重新分配为孩子吗?我应该使用什么方法将topLevelItem作为另一个顶级项的子项?

1 个答案:

答案 0 :(得分: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


EDITED 0:50 7/8/2014 在列表中添加标题。


此致