76

您所在的位置:网站首页 qtreewidget和qtreeview区别 76

76

2023-12-16 23:39| 来源: 网络整理| 查看: 265

树结构控件QTreeWidget 及其项QTreeWidgetltem

QTreeWidget 用来描述树。QTreeWidget 继承自 QTreeView,并且有自己内置的模型,每个项目都由 QtreeWidgetItem 构造。如果想构建更复杂的树,或者使用自定义模型,则需要使用QtreeView。

树结构控件QTreeWidget 继承自QTreeView类它是QTreeView 的便利类。

树结构控件由 1列或多列构成,没有行的概念。

树结构控件有 1个或多个顶层项,顶层项下面有任意多个子项,子项下面还可以有子项,顶层项没有父项。

顶层项和子项都是QTreeWidgetItem,每个QTreeWidgetItem 可以定义在每列显示的文字和图标,一般应在第1列中定义文字或图标,其他列中是否设置文字和图标,需要用户视情况而定。

可以把每个项理解成树结构控件的一行,只不过行之间有层级关系,可以折叠和展开。

用QTreeWidget 类创建树结构控件的方法如下。其中parent是QTreeWidget 树结构控件所在的父窗口或控件

from PySide6.QtWidgets import QTreeWidget QTreeWidget(parent: Union[PySide6.QtWidgets.QWidget,NoneType]= None)-> None

用QTreeWidgetItem类创建树结构项的方法如下。其中Sequence[str]表示字符串序列,是各列上的文字。

第1个参数是QTreeWidget 时表示项追加到树结构控件中,这时新创建的项是顶层项;第1个参数是QTreeWidgetItem表示父项,这时新创建的项作为子项追加到父项下面;第2个参数是QTreeWidgetItem 时表示新创建的项插人到该项 from PySide6.QtWidgets import QTreeWidgetItem QTreeWidgetItem(Other: PySide6.QtWidgets.QTreeWidgetItem)-> None QTreeWidgetItem(parent: PySide6.QtWidgets.QTreeWidgetItem,after: PySide6.QtWidgets.QTreeWidgetItem,type: int = )-> None QTreeWidgetItem(parent: PySide6.QtWidgets.QTreeWidgetItem,strings: Sequence[str],type: int = )-> None QTreeWidgetItem(parent: PySide6.QtWidgets.QTreeWidgetItem,type: int = )-> None QTreeWidgetItem(strings: Sequence[str],type: int = )-> None QTreeWidgetItem(treeview: PySide6.QtWidgets.QTreeWidget,after: PySide6.QtWidgets.QTreeWidgetItem,type: int = )-> None QTreeWidgetItem(treeview: PySide6.QtWidgets.QTreeWidget,strings: Sequence[str],type: int = )-> None QTreeWidgetItem(treeview: PySide6.QtWidgets.QTreeWidget,type: int = )-> None QTreeWidgetItem(type: int = )-> None 树结构控件 QTreeWidget 的常用方法

树结构控件 QTreeWidget 的常用方法如表所示主要方法介绍如下

树结构控件的列的数量由 setColumnCount(columns:int)方法定义,可以为项的每个列定义文字、图标、背景色和前景色、控件和角色值。

树结构控件可以添加顶层项,往项中添加子项需要用项的方法。

用addTopLevelItem(QTreeWidgetItem)方法和 addTopLevelItems(Sequence[QTreeWidgetItem])方法添加顶层项; 用insertTopLevelItem(index: int,QTreeWidgetItem)方法和 insertTopLevelItems(index; int,Sequence[QTreeWidgetItem])方法可以插人顶层; 用takeTopLevelItem(index:int)方法可以移除顶层项,并返回该项;用topLevelItemCount()方法可以获取顶层项的数量;用topLevelItem(index;int)方法可以获取索引值是index 的顶层项。用setCurrentItem(QTreeWidgetItem)方法设置当前项,用setCurrentItem(QTreeWidgetItem,column:int)方法设置当前项和当前列,用currentItem()方法获取当前项。用setHeaderItem(QTreeWidgetItem)方法可以设置表头项, 用setHeaderLabel(label:str)方法和 setHeaderLabels(labels;Sequence[str])方法设置表头文字。 用collapseItem(QTreeWidgetItem)方法可以折叠指定的项 用collapseAlI()方法可以折叠所有的项, 用expandItem(QTreeWidgetItem)方法可以展开指定的项 用expandAl1()方法可以展开所有的项。

对QListWidget和QTableWidget 的介绍非常详细。本节对QTreeWidget的介绍相对简单一些,只提供一些用来显示数据的基本操作,因为 QTreeWidget 仅仅用来显示数据。

构建一个QtreeWidget实例之后,首先要使用setColumnCount()函数设置树有几列,然后通过columnCount()函获取这个数字。代码如下:

self.treewidget = QTreeWidget() self.treewidget.setColumnCount(3)

树可以设置标题,既可以使用setHeaderLabels()函数快速设置,也可以使用QTreeWidgetItem()函由构造更复杂的标题,如下所示构谐白定义标照并逐加列

#方式1 self,treeWidget,setHeaderLabels(['学科','姓名','分数']) # 方式2 item = QTreeWidgetItem() item.setText(0,'学科') item.setText(1,'姓名') item.setText(2,'分数') item.setIcon(0,QIcon('./images/root .png')) self.treeWidget.setHeaderItem(item)

创建item 也有另一种快捷方式,效果是一样的:

item = QTreewidgetItem(['学科','姓名','分数']) item.setIcon(0,QIcon('./images/root.png')) self.treeWidget.setHeaderItem(item)

初始化树实例,定义了树的列数,并且设置了标题之后,接下来就是创建树的内容

QTreeWidget的方法及参数类型说明setColumnCount(columns: int)设置列数columnCount()获取列数currentColumn()获取当前列setColumnWidth(column:int,width:int)设置列的宽度setColumnHidden(column:int,hide:bool)设置列是否隐藏addTopLevelltem(QTreeWidgetItem)添加顶层项addTopLevelItems(Sequence[QTreeWidgetItem])添加多个顶层项insertTopLevelltem(index: int,QTreeWidgetItem)插人顶层项insertTopLeveltems(index: int,Sequence[QTreeWidgetltem])插入多个顶层项takeTopLevelltem(index: int)移除顶层项,并返回移除的项1opLevelItem(index:int)获取索引值是int的顶层项topLevelItemCount()获取顶层项的数量setCurrentItem(QTreeWidgetltem)把指定的项设置成当前项setCurrentItem(QTreeWidgetItem,column:int)设置当前项和当前列currentItem()获取当前项editItem(QTreeWidgetItem,column:int=0)开始编辑项findItems(str,Qt.MatchFlag,column:int=0)搜索项,返回项的列表setHeaderItem(QTreeWidgetItem)设置表头setHeaderLabel(label:str)设置表头第1列文字setHeaderLabels(labels: Sequence[str])设置表头文字headerItem():0830109293319获取表头项indexOfTopLevelItem(QTreeWidgetltem)获取顶层项的索引值invisiblerootItem()获取不可见的根项itemAbove(QTreeWidgetltem)获取指定项之前的项itemBelow(QTreeWidgetItem)获取指定项之后的项itemAr(QPoint)获取指定位置的项itemAt(x:int,y:int)获取指定位置的项openPersistentEditor(QTreeWidgetItem,column=0)打开编辑框isPersistentEditorOpen(QTreeWidgetItem,column=0)获取编辑框是否已经打开closePersistentEditor(QTreeWidgetItem,column=0)关闭编辑框[slot]scrolToItem(QTreeWidgetItem)滚动树结构,使指定的项可见selectedItems()获取选中的项列表setFirstItemColumnSpanned(QTreeWidgetItem,bool)只显示指定项的第1列的值isFirstItemColumnSpanned(QTreeWidgetItem)获取是否只显示第1列的值setItemWidget(QTreeWidgetItem,column: int,QWidget)在指定项的指定列设置控件itemWidget(QTreeWidgetItem,column:int)获取项上的控件removeItem Widget(QTreeWidgetItem,column:int)移除项上的控件[slot]collapseItem(QTreeWidgetItem)折叠项collapseA1()折叠所有的项[slot]expandItem(QTreeWidgetItem)展开项expandAII()展开所有的项[slot]clear()清空所有项 树结构控件QTreeWidget 的信号

树结构控件QTreeWidget 的信号如表所示

QTreeWidget的信号及参数类型说明currentItemChanged(currentltem,previousItem)当前项发生改变时发送信号itemActivated(item,column)项变成活跃项时发送信号itemChanged(item,column)项发生改变时发送信号itemClicked(item,column)单击项时发送信号itemDoubleClicked(item,column)双击项时发送信号itemEntered(item,column)光标进人项时发送信号itemPressed(item,column)在项上按下鼠标按键时发送信号itemExpanded(item)展开项时发送信号itemCollapsed(item)折叠项时发送信号itemSelectionChanged()选择的项发生改变时发送信号 树结构项QTreeWidgetItem

QTreeWidgetItem类提供了一个与QTreeWidget便利类一起使用的项。

from PySide6.QtWidgets import QTreeWidgetItem QTreeWidgetItem(other: PySide6.QtWidgets.QTreeWidgetItem)-> None QTreeWidgetItem(parent: PySide6.QtWidgets.QTreeWidgetItem, after: PySide6.QtWidgets.QTreeWidgetItem, type: int = )-> None QTreeWidgetItem(parent: PySide6.QtWidgets.QTreeWidgetItem, strings: Sequence[str], type: int = )-> None QTreeWidgetItem(parent: PySide6.QtWidgets.QTreeWidgetItem, type: int = )-> None QTreeWidgetItem(strings: Sequence[str], type: int = )-> None QTreeWidgetItem(treeview: PySide6.QtWidgets.QTreeWidget, after: PySide6.QtWidgets.QTreeWidgetItem, type: int = )-> None QTreeWidgetItem(treeview: PySide6.QtWidgets.QTreeWidget, strings: Sequence[str], type: int = )-> None QTreeWidgetItem(treeview: PySide6.QtWidgets.QTreeWidget, type: int = )-> None QTreeWidgetItem(type: int = )-> None treeview – PySide6.QtWidgets.QTreeWidget other – PySide6.QtWidgets.QTreeWidgetItem after – PySide6.QtWidgets.QTreeWidgetItem type – int parent – PySide6.QtWidgets.QTreeWidgetItem strings – list of strings 构造指定类型的树小部件项,并将其插入到前面项之后的给定父项中。构造指定类型的树小部件项,并将其附加到给定父级中的项。给定的字符串列表将被设置为项目中每列的项目文本。构造指定类型的树小部件项,并将其附加到给定父级中的项。构造指定类型的树窗口小部件项,该项在前一个子项之后插入到父项中。构造一个树小部件项,并将其附加到给定的父级。给定的字符串列表将被设置为项目中每列的项目文本。构造一个树小部件项,并将其附加到给定的父级。构造指定类型的树小部件项。该项必须插入到树小部件中。给定的字符串列表将被设置为项目中每列的项目文本。构造其他的副本。请注意,type()和treeWidget()不会被复制。当重新实现clone()时,此函数非常有用。构造指定类型的树小部件项。该项必须插入到树小部件中。 树结构项QTreeWidgetItem官方描述

树小部件项用于保存树小部件的信息行。行通常包含几列数据,每列数据可以包含一个文本标签和一个图标。 QTreeWidgetItem类是一个方便类,它取代了Qt 3中的QListViewItem类。它提供了一个与QTreeWidget类一起使用的项。 项通常由一个父项构造,该父项要么是QTreeWidget(用于顶级项),要么是QTree WidgetItem(用于树的较低级别上的项)。例如,以下代码构造了一个顶级项目来表示世界上的城市,并添加了一个奥斯陆条目作为子项目:

cities = QTreeWidgetItem(treeWidget) cities.setText(0, tr("Cities")) osloItem = QTreeWidgetItem(cities) osloItem.setText(0, tr("Oslo")) osloItem.setText(1, tr("Yes"))

项目可以按特定顺序添加,方法是指定它们在构建时所遵循的项目:

planets = QTreeWidgetItem(treeWidget, cities)

项目中的每一列都可以有自己的背景笔刷,该笔刷是通过setBackground()函数设置的。当前的背景笔刷可以通过background()找到。每一列的文本标签都可以用自己的字体和画笔呈现。这些是用setFont()和setForeground()函数指定的,并用font()和foreground(。 顶级项和树的较低级别中的项之间的主要区别在于,顶级项没有parent()。这些信息可以用来区分项目之间的区别,并且在从树中插入和删除项目时很有用。可以使用takeChild()移除项的子项,并使用insertChild()函数将其插入子项列表中的给定索引处。 默认情况下,项目是启用的、可选择的、可检查的,并且可以是拖放操作的来源。可以通过使用适当的值调用setFlags()来更改每个项目的标志(请参见ItemFlags)。可检查项可以使用setCheckState()函数进行检查和取消检查。相应的checkState()函数指示该项当前是否已被检查。

子类别化

当对QTreeWidgetItem进行子类化以提供自定义项时,可以为它们定义新的类型,以便将它们与标准项区分开来。需要此功能的子类的构造函数需要调用具有等于或大于UserType的新类型值的基类构造函数。

树结构项QTreeWidgetItem方法 PySide6.QtWidgets.QTreeWidgetItem.ItemType

(继承enum.IntEnum)此枚举描述用于描述树小部件项的类型。您可以在QTreeWidgetItem子类中定义新的用户类型,以确保对自定义项进行特殊处理;例如,当项目被排序时。

ConstantDescriptionQTreeWidgetItem.Type树小部件项的默认类型。QTreeWidgetItem.UserType自定义类型的最小值。UserType以下的值由Qt保留。

PySide6.QtWidgets.QTreeWidgetItem.ChildIndicatorPolicy

ConstantDescriptionQTreeWidgetItem.ShowIndicator即使没有子项,也会显示此项目的展开和折叠控件。QTreeWidgetItem.DontShowIndicator即使有子对象,也永远不会显示用于展开和折叠的控件。如果节点被强制打开,则用户将无法展开或折叠项目。QTreeWidgetItem.DontShowIndicatorWhenChildless如果项目包含子项,则将显示用于展开和折叠的控件。

树结构项QTreeWidgetItem 的常用方法如表所示,主要方法介绍如下

用addChild(QIreeWidgetItem)方法或addChildren(Sequence[QTreeWidgetItem])方法可以为项添加子项

用insertChild(index;int,QTreeWidgetItem)方法或insertChildren(index:int,Sequence[QTreeWidgetItem])方法可以在项的子项中插人子项,用childCount()方法可以获取子项的数量,用child(index:int)方法可以获取指定索引号的子项。

用takeChild(int)方法移除指定索引号的项,并返回该项;

用removeChild(QTreeWidgetItem)方法移除指定的子项;用takeChildren()方法移除所有的子项,并返回子项列表。

用setText(index:int,str)方法设置项的第int 列的文字,

用setIcon(index:int;QIcon)方法设置项的第int列的图标,用setFont(index;int,QFont)方法设置项的第int列的字体,用setBackground(index:int,QColor)方法设置项第int列的背景色,用setForeground(index:int,QColor)方法设置项第int列的前景色

用setCheckState(column:int,Qt.CheckState)方法设置项的第 int 列的选状态,其中Qt.CheckState可以取以下值;用checkState(column;int)方法获取项的勾选状态。

Qt.Unchecked(未勾选)QtPartiallyChecked(部分勾选,如果有子项)Qt.Checked(勾选)

用setExpanded(True)方法展开项

用setExpanded(False)方法折叠项

用setChildIndicatorPolicy(QTreeWidgetItem,ChildIndicatorPolicy)方法设置展开折叠标识的显示策略,其中QTreeWidgetItem.ChildIndicatorPolicy 可以取:

QTreeWidgetItem.ShowIndicator(不论有没有子项,都显示标识)QTreeWidgetItem.DontShowIndicator(即便有子项,也不显示标识)QTreeWidgetItem.DontShowIndicatorWhenChildless(当没有子项时不显示标识) QTreeWidgetItem 的方法及参数类型说 明addChild(child: PySide6.QtWidgets.QTreeWidgetItem)-> None将子项追加到子项列表中。addChildren(children: Sequence[PySide6.QtWidgets.QTreeWidgetItem])-> None将给定的子项列表附加到该项。background(column: int)-> PySide6.QtGui.QBrush返回用于渲染指定列的背景的笔刷。checkState(column: int)-> PySide6.QtCore.Qt.CheckState返回给定列中标签的检查状态。child(index: int)-> PySide6.QtWidgets.QTreeWidgetItem返回项的子项列表中给定索引处的项。childCount()-> int返回子项的数目。childIndicatorPolicy()-> PySide6.QtWidgets.QTreeWidgetItem.ChildIndicatorPolicy返回项目指示符策略。此策略决定何时显示树枝展开/折叠指示器。clone()-> PySide6.QtWidgets.QTreeWidgetItem创建项及其子项的深度副本。columnCount()-> int返回项目中的列数。data(column: int, role: int)-> Any返回项的列和角色的值。emitDataChanged()-> None使与此项关联的模型为此项发出dataChanged()信号。通常,只有在已经子类化了QTreeWidgetItem并重新实现了data()和/或setData()的情况下,才需要调用此函数。flags()-> PySide6.QtCore.Qt.ItemFlag返回用于描述项目的标志。这些决定了是否可以检查、编辑和选择项目。标志的默认值为`ItemIsSelectablefont(column: int)-> PySide6.QtGui.QFont返回用于呈现指定列中的文本的字体。foreground(column: int)-> PySide6.QtGui.QBrush返回用于渲染指定列的前景(例如文本)的画笔。设置默认构造的笔刷将使视图使用样式中的默认颜色。icon(column: int)-> PySide6.QtGui.QIcon返回显示在指定列中的图标。indexOfChild(child: PySide6.QtWidgets.QTreeWidgetItem)-> int返回项的子项列表中给定子项的索引。insertChild(index: int, child: PySide6.QtWidgets.QTreeWidgetItem)-> None在子项列表的索引处插入子项。如果子项已经插入到其他位置,则不会再次插入。insertChildren(index: int, children: Sequence[PySide6.QtWidgets.QTreeWidgetItem])-> None将给定的子项列表插入索引处的项子项列表中。已经插入其他位置的子项将不会被插入。isDisabled()-> bool如果项目被禁用,则返回true;否则返回false。isExpanded()-> bool如果项已展开,则返回true,否则返回false。isFirstColumnSpanned()-> bool如果项跨越一行中的所有列,则返回true;否则返回false。isHidden()-> bool如果项是隐藏的,则返回true,否则返回false。isSelected()-> bool如果选择了项,则返回true,否则返回false。__lt__(other:PySide6.QtWidgets.QTreeWidgetItem)->bool如果项中的文本小于另一项中的文字,则返回true,否则返回false。parent()-> PySide6.QtWidgets.QTreeWidgetItem返回项目的父级。read(in_: PySide6.QtCore.QDataStream)-> None从中的流中读取项目。这只会将数据读取到单个项目中。removeChild(child: PySide6.QtWidgets.QTreeWidgetItem)-> None删除由子项指示的给定项。删除的项目将不会被删除。setBackground(column: int, brush: Union[PySide6.QtGui.QBrush, PySide6.QtCore.Qt.BrushStyle, PySide6.QtCore.Qt.GlobalColor, PySide6.QtGui.QColor, PySide6.QtGui.QGradient, PySide6.QtGui.QImage, PySide6.QtGui.QPixmap])-> None将给定列中标签的背景笔刷设置为指定的笔刷。设置默认构造的笔刷将使视图使用样式中的默认颜色。setCheckState(column: int, state: PySide6.QtCore.Qt.CheckState)-> None将处于给定列检查状态的项设置为state。setChildIndicatorPolicy(policy: PySide6.QtWidgets.QTreeWidgetItem.ChildIndicatorPolicy)-> None设置项目指标策略。此策略决定何时显示树枝展开/折叠指示器。默认值为DontShowIndicator WhenChildless。setData(column: int, role: int, value: Any)-> None将项的列和角色的值设置为给定值。角色描述由值指定的数据类型,并由ItemDataRole枚举定义。setDisabled(disabled: bool)-> None如果禁用为true,则禁用该项目;否则将启用该项目。setExpanded(expand: bool)-> None如果expand为true,则展开项目,否则折叠项目。setFirstColumnSpanned(span: bool)-> None如果span为true,则将第一节设置为跨所有列;否则将显示所有项目部分。setFlags(flags: PySide6.QtCore.Qt.ItemFlag)-> None将项目的标志设置为给定的标志。这些决定了项目是否可以被选择或修改。这通常用于禁用项目。setFont(column: int, font: Union[PySide6.QtGui.QFont, str, Sequence[str]])-> None将用于显示给定列中文本的字体设置为给定字体。setForeground(column: int, brush: Union[PySide6.QtGui.QBrush, PySide6.QtCore.Qt.BrushStyle, PySide6.QtCore.Qt.GlobalColor, PySide6.QtGui.QColor, PySide6.QtGui.QGradient, PySide6.QtGui.QImage, PySide6.QtGui.QPixmap])-> None将给定列中标签的前景笔刷设置为指定的笔刷。setHidden(hide: bool)-> None如果隐藏为true,则隐藏项目,否则显示项目。如果项目当前不在视图中,则对此函数的调用无效。特别是,对一个项调用setHidden(true),然后将其添加到视图中,会得到一个可见的项。setIcon(column: int, icon: Union[PySide6.QtGui.QIcon, PySide6.QtGui.QPixmap])-> None将要在给定列中显示的图标设置为图标。setSelected(select: bool)-> None设置要选择的项目的选定状态。setSizeHint(column: int, size: PySide6.QtCore.QSize)-> None将给定列中树项的大小提示设置为大小。如果未设置大小提示或大小无效,则项目委托将根据项目数据计算大小提示。setStatusTip(column: int, statusTip: str)-> None将给定列的状态提示设置为给定的状态提示。需要启用QTreeWidget鼠标跟踪才能使此功能正常工作。setText(column: int, text: str)-> None将要在给定列中显示的文本设置为给定文本。setTextAlignment(column: int, alignment: PySide6.QtCore.Qt.AlignmentFlag)-> NonesetTextAlignment(column: int, alignment: int)-> None使用采用Alignment参数的重载。将给定列中标签的文本对齐方式设置为指定的对齐方式。将给定列中标签的文本对齐方式设置为指定的对齐方式。setToolTip(column: int, toolTip: str)-> None将给定列的工具提示设置为tooltip。setWhatsThis(column: int, whatsThis: str)-> None将给定列的"What’s This?"帮助设置为whatsThis。sizeHint(column: int)-> PySide6.QtCore.QSize返回给定列中树项的大小提示集(请参见QSize)。sortChildren(column: int, order: PySide6.QtCore.Qt.SortOrder)-> None根据给定列中的值,使用给定的顺序对项的子项进行排序。statusTip(column: int)-> str返回给定列内容的状态提示。takeChild(index: int)-> PySide6.QtWidgets.QTreeWidgetItem删除索引处的项并返回该项,否则返回0。takeChildren()-> List[PySide6.QtWidgets.QTreeWidgetItem]删除子项列表并返回,否则返回一个空列表。text(column: int)-> str返回指定列中的文本。textAlignment(column: int)-> int返回给定列中标签的文本对齐方式。toolTip(column: int)-> str返回给定列的工具提示。treeWidget()-> PySide6.QtWidgets.QTreeWidget返回包含该项的树小部件。type()-> int返回传递给QTreeWidgetItem构造函数的类型。whatsThis(column: int)-> str返回给定列内容的"这是什么?"帮助。write(out: PySide6.QtCore.QDataStream)-> None写入要流式输出的项。这只会从一个项目中写入数据。 树结构控件QTreeWidget 的应用实例

image-20230326212353612

# -*- coding: UTF-8 -*- # File date: Hi_2023/3/26 21:24 # File_name: 06-树结构控件QTreeWidget的应用实例.py from PySide6.QtWidgets import * from PySide6.QtGui import * from PySide6.QtCore import * import sys import random import os os.chdir(os.path.dirname(__file__)) class QTreeWidgetDemo(QMainWindow): def __init__(self,parent=None): super(QTreeWidgetDemo,self).__init__(parent) self.setWindowTitle("QTreeWidget案例") self.resize(500,600) self.text = QPlainTextEdit('用来显示QTreeWidget相关信息:') self.treeWidget = QTreeWidget() layout = QVBoxLayout(self) layout.addWidget(self.treeWidget) layout.addWidget(self.text) widget = QWidget() self.setCentralWidget(widget) widget.setLayout(layout) self.initItem() # selection # self.listWidget.setSelectionMode(QAbstractItemView.SingleSelection) self.treeWidget.setSelectionMode(QAbstractItemView.ExtendedSelection) # self.treeWidget.setSelectionBehavior(QAbstractItemView.SelectRows) self.treeWidget.setSelectionBehavior(QAbstractItemView.SelectItems) self.treeWidget.setMouseTracking(True) # 信号与槽 self.treeWidget.currentItemChanged[QTreeWidgetItem,QTreeWidgetItem].connect(self.onCurrentItemChanged) self.treeWidget.itemActivated[QTreeWidgetItem,int].connect(self.onItemActivated) self.treeWidget.itemClicked[QTreeWidgetItem,int].connect(self.onItemClicked) self.treeWidget.itemDoubleClicked[QTreeWidgetItem,int].connect(lambda item,column: self.text.appendPlainText(f'"{item.text(column)}"触发itemDoubleClicked信号:')) self.treeWidget.itemChanged[QTreeWidgetItem,int].connect(lambda item,column: self.text.appendPlainText(f'"{item.text(column)}"触发itemChanged信号:')) self.treeWidget.itemEntered[QTreeWidgetItem,int].connect(lambda item,column: self.text.appendPlainText(f'"{item.text(column)}"触发itemEntered信号:')) self.treeWidget.itemPressed[QTreeWidgetItem,int].connect(lambda item,column: self.text.appendPlainText(f'"{item.text(column)}"触发itemPressed信号:')) self.treeWidget.itemSelectionChanged.connect(lambda: self.text.appendPlainText(f'触发itemSelectionChanged信号:')) self.treeWidget.clicked.connect(self.onClicked) def initItem(self): # 设置列数 self.treeWidget.setColumnCount(3) # 设置树形控件头部的标题 self.treeWidget.setHeaderLabels(['学科','姓名','分数']) # 设置根节点 root = QTreeWidgetItem(self.treeWidget) root.setText(0,'学科') root.setText(1,'姓名') root.setText(2,'分数') root.setIcon(0,QIcon('./images/root.png')) # 设置根节点的背景颜色 root.setBackground(0,QBrush(Qt.blue)) root.setBackground(1,QBrush(Qt.yellow)) root.setBackground(2,QBrush(Qt.red)) # 设置树形控件的列的宽度 self.treeWidget.setColumnWidth(0,150) # 设置子节点1 for subject in ['语文','数学','外语','综合']: child1 = QTreeWidgetItem([subject,'','']) root.addChild(child1) # 设置子节点2 for name in ['张三','李四','王五','赵六']: child2 = QTreeWidgetItem() child2.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsUserCheckable) child2.setText(1,name) score = random.random()* 40 + 60 child2.setText(2,str(score)[:5]) if score >= 90: child2.setBackground(2,QBrush(Qt.red)) elif 80


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3