我正在使用python插件。我使用 PyQt4 设计器。 我想将查询结果列入 QTreeWidget 。 我的代码如下:
c = self.db.con.cursor()
self.db._exec_sql(c, "select est from bio")
for row in c.fetchall():
item_value=unicode(row[0])
top_node1 = QTreeWidgetItem(item_value)
self.treeWidget.insertTopLevelItem(0, top_node1)
查询将值返回为:
但是当我使用上面的代码将这些值列入 QTreeWidget 时,它显示如下:
只显示第一个字符。如果我将'0'更改为self.treeWidget.insertTopLevelItem(0,top_node1)中的其他数字,则 QTreeWidget 中不会显示任何内容。
我该怎么做???? 感谢名单。
答案 0 :(得分:2)
如果您查看documentation for a QTreeWidgetItem,您会看到有许多可能的构造函数用于创建实例。虽然看起来你似乎没有一种方式可以给你带来理想的结果。与您提供的签名最接近的匹配是:
QTreeWidgetItem ( const QStringList & strings, int type = Type )
这可能正在做的是取你的字符串(我假设row[0]
是一个字符串,因为我不知道你正在使用哪些驱动程序)并将其应用为序列,这将满足{的要求{1}}。因此,您获得的是使用字符串值的每个字母填充项目的多个列。如果这是您想要的,那么您需要告诉您的小部件显示更多列:QStringList
。但这不是你想要的,我相信。
你应该尝试的更多可能是创建一个新项目,然后将值添加到所需的列:
self.treeWidget.setColumnCount(10)
您可以使用不带参数的默认构造函数,将第一列的文本值设置为数据库记录字段值,然后将该项添加到树中。您还可以建立项目列表并立即添加:
item = QTreeWidgetItem()
item.setText(0, unicode(row[0]))
self.treeWidget.insertTopLevelItem(0, item)
答案 1 :(得分:1)
你的第一个方法可以纠正,只需在widgetitem中添加一个列表,而不是像这样的字符串:
top_node1 = QTreeWidgetItem([item_value])