Python qtreewidget的PyQt视图模型方法
我不确定Qt的模型/视图系统是如何工作的。。。他们声称qtreewidget小部件使用它,但我看不出它是如何工作的 我想做的是让qtreewidget节点指向一个数据对象,并覆盖UI用于显示数据的方法。有人能告诉我如何重写这些方法吗 这是我的数据对象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
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我想在树视图中显示我的每个类对象。如果类对象有子对象,则这些子对象将显示在其相应的父对象下,依此类推。你能帮忙吗?