Python qtreewidget的PyQt视图模型方法

Python qtreewidget的PyQt视图模型方法,python,qt,widget,pyside,Python,Qt,Widget,Pyside,我不确定Qt的模型/视图系统是如何工作的。。。他们声称qtreewidget小部件使用它,但我看不出它是如何工作的 我想做的是让qtreewidget节点指向一个数据对象,并覆盖UI用于显示数据的方法。有人能告诉我如何重写这些方法吗 这是我的数据对象 class Car(): def __init__(self, name="", age=0, children=None): self.name = name self.uid = str( uuid.uu

我不确定Qt的模型/视图系统是如何工作的。。。他们声称qtreewidget小部件使用它,但我看不出它是如何工作的

我想做的是让qtreewidget节点指向一个数据对象,并覆盖UI用于显示数据的方法。有人能告诉我如何重写这些方法吗

这是我的数据对象

class Car():
    def __init__(self, name="", age=0, children=None):
        self.name = name
        self.uid = str( uuid.uuid4( ) )
        self.age = age
        self.children = children if children is not None else []
我不知道该在哪里做这项工作,但理论上我认为它看起来像这样:

class CustomTreeNode( QtGui.QTreeWidgetItem ):
    def __init__( self, parent, car ): # Only supply the car, you will see why down below
        super( CustomTreeNode, self ).__init__( parent )
        self.car_data = car

    def getText( self, col ):
        # Override whatever internal method the UI calls to query the text value before painting itself
        # --- this would always just reflect the Car instance's value instead of trying to synchronize all of the TreeItems

        return self.car_data.name


    def getFont( self, col ):
        # Likewise for painting the selected items bolded --

        # Over in your treewidget on selection changed events, you'd store off the selected cars:
        # --- self.selected_cars = set( [ item.car_data for item in event.selection ] )

        # Then here when the UI queries the font to render it would do something like this:

        if self.car_data in self.tree_widget.selected_cars:
              return FONTS.get_font("accent")
        else:
              return FONTS.get_font("regular")

你最终想做什么?似乎您可能希望使用视图/模型,因为自定义模型将在如何显示数据方面给您带来很大的灵活性。您也应该看看。@101我想在树视图中显示我的每个类对象。如果类对象有子对象,则这些子对象将显示在其相应的父对象下,依此类推。你能帮忙吗?