PyQt QTreeWidget不显示内容
我用Qt设计师设计了一个用户界面(文件名:tree_view_widget_ui.py),然后我有一个类(文件名:tree_view_widget.py),它负责创建这个小部件并显示数据,但数据却没有显示出来。有没有人能告诉我我哪里做错了?
tree_view_widget.py
from tree_view_widget_ui import Ui_Form
class TreeViewWidget(QWidget):
def __init__(self, data2show):
QtGui.QWidget.__init__(self,parent)
self.ui = Ui_Form()
self.ui.setupUi(self)
self.data2show = data2show
self.addItems(self.ui.treeWidget.invisibleRootItem()) #not sure about this line?
def addItems(self, parent):
column = 0
data_group_1 = self.addParent(parent, column, 'Group1', 'data Clients')
for data in self.data2show:
self.addChild(data_item, column, data.prop1, data.prop2)
def addParent(self, parent, column, title, data):
item = QtGui.QTreeWidgetItem(parent, [title])
item.setData(column, QtCore.Qt.UserRole, data)
item.setChildIndicatorPolicy(QtGui.QTreeWidgetItem.ShowIndicator)
item.setExpanded (True)
return item
def addChild(self, parent, column, title, data):
item = QtGui.QTreeWidgetItem(parent, [title])
item.setData(column, QtCore.Qt.UserRole, data)
return item
还有这个GUI设计文件(是用Qt设计师创建的):
tree_view_widget_ui.py
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("TreeView"))
Form.setEnabled(True)
Form.resize(200, 400)
Form.setFixedSize(200, 400)
self.treeWidget = QtGui.QTreeWidget(Form)
self.treeWidget.setEnabled(True)
self.treeWidget.setGeometry(QtCore.QRect(0, 0, 200, 400))
self.treeWidget.setFrameShadow(QtGui.QFrame.Sunken)
self.treeWidget.setLineWidth(1)
self.treeWidget.setMidLineWidth(0)
self.treeWidget.setAutoScrollMargin(16)
self.treeWidget.setIndentation(1)
self.treeWidget.setRootIsDecorated(True)
self.treeWidget.setUniformRowHeights(True)
self.treeWidget.setAnimated(False)
self.treeWidget.setColumnCount(0)
self.treeWidget.setObjectName(_fromUtf8("treeWidget"))
self.treeWidget.header().setVisible(False)
self.treeWidget.setHeaderHidden(True)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
Form.setWindowTitle(_translate("Tree View", "Tree View", None))
self.treeWidget.setSortingEnabled(False)
有没有什么建议可以让我修改代码,让数据以树形结构显示出来?
1 个回答
1
你看不到你添加的任何项目,是因为你在图形界面模块里把树形控件的列数设置成了零。
要解决这个问题,回到Qt Designer,选中你的树形控件,然后往下滚动到属性编辑器的底部。接着找到columnCount的值,点击右边的小红箭头,把它重置回默认值。
别忘了重新生成你的图形界面模块哦!