多个QTreeWidget上的单个QTreeWidgetItem实例?

时间:2012-12-19 19:26:17

标签: qt qt4 pyside qtreewidget qtreewidgetitem

我正在尝试在2 QTreeWidgetItem s上显示单个QTreeWidget实例,该实例最终只显示在第一棵树上的项目,而不会收到通知。我没有看到its API doc谈到限制,如果有的话。有办法解决方法吗?

#!/usr/bin/python
import os
import sys  

from PySide.QtCore import QFile
from PySide.QtUiTools import QUiLoader
from PySide.QtGui import QApplication, QTreeWidget, QTreeWidgetItem, QWidget

class MyTreeWidgetItem(QTreeWidgetItem):
    def __init__(self, *args):  
       super(MyTreeWidgetItem, self).__init__()

class MyWidget(QWidget):
    def __init__(self, *args):  
       super(MyWidget, self).__init__()

       loader = QUiLoader()
       file = QFile('./src/prove_qtreewidget/qtree_mainwidget.ui') 
       file.open(QFile.ReadOnly)
       self.widget_ui = loader.load(file, self)
       file.close()

       item1 = MyTreeWidgetItem(self)
       item1.setText(0, 'Item 1')

       _tw1 = self.widget_ui.findChild(QTreeWidget, '_tree_widget_1')
       _tw2 = self.widget_ui.findChild(QTreeWidget, '_tree_widget_2')
       _tw1.addTopLevelItem(item1)
       _tw2.addTopLevelItem(item1)

if __name__ == '__main__':  
   print("Running in " + os.getcwd() + " .\n")    
   app = QApplication(sys.argv)      
   win = MyWidget()  
   win.show()    
   app.exec_()
上面的

.ui文件可用here

使用Qt 4.8,Ubuntu 12.04

我没有尝试PyQt绑定,但我只是假设不应该有任何不同的w / o证明。

1 个答案:

答案 0 :(得分:0)

你需要的是model and a QTreeView,它的用途是什么:

  

模型/视图编程:窗口小部件不维护内部数据容器。他们通过标准化接口访问外部数据,从而避免数据重复。