PyQT treeWidget控件

510 阅读2分钟

一、设置奇偶行背景色交替:

self.treeWidget.setAlternatingRowColors(True)

如图所示:

image.png

二、树节点展开与收缩

1、展开所有树节点

self.treeWidget.expandAll()

如图所示:

image.png

2、收缩所有树节点

self.treeWidget.collapseAll()

image.png

三、选中项操作

概述:

selectionMode属性用于控制view中操作数据项的模式,用于控制选择一个或多个数据项,以及在多个数据项中选择,同时对选择方式是否必须是一个连续的范围设置

1、QAbstractItemView.SelectionMode取值含义

selectionMode属性的类型为枚举类型枚举类型

QAbstractItemView.SelectionMode,对应取值及含义如下:

常量描述
SingleSelection仅能选择一个数据项,同windows鼠标左键选中文件
MultiSelection实现按住鼠标左键拖动进行多选
ContiguousSelection单击某个选项,按shlft+另外一个选项,中间所有选项会被选中,同windows中shift选文件
ExtendedSelection有MultiSelection和ContiguousSelection效果,另外可以按住ctrl+鼠标左键实现不连续多选,同windows文件选择操作
NoSelection所有数据项都无法选中

2、属性访问方法

selectionMode() 获取当前的属性值
setSelectionMode(QAbstractItemView.ExtendedSelection) # 设置属性值

另外属性值还可以通过Qt Designer直接设置

  1. 选中treeWidget对象
  2. 属性编辑器中输入:selection
  3. selectionMode属性值的下拉框中找到对应的项 最后进行保存

如图所示: image.png

3、鼠标右键触发信号

contextMenuPolicy属性 contextMenuPolicy属性是组件的快捷菜单策略,快捷菜单通过在部件上点击鼠标右键触发。设置参数说明如下所示:

image.png

来源:CSDN博主老猿Python

示例:鼠标右键单击出现目录菜单

1.选中treeWidget对象

2.属性编辑器中输入:context

3.在下拉框中设置对应的属性 如图所示:

image.png

4、widget中设置信号方法

# 将信号请求连接到槽(单击鼠标右键,就调用方法)
self.treeWidget.customContextMenuRequested.connect(self.generateMenu)

5、generateMenu方法


# pos为点击的位置
def generateMenu(self, pos):
    print(pos)
    menu = QMenu(self)
    copy_all_as_text = menu.addAction("Copy All As Text")
    copy_selection_as_text = menu.addAction("Copy Selection As Text")
    # 使菜单在正常位置显示
    screenPos = self.treeWidget.mapToGlobal(pos)
    
    # 单击一个菜单项就返回,使之被阻塞
    action = menu.exec_(screenPos)

    if action == copy_all_as_text:
        # 以文本形式复制整个结果
        self.copy_all_as_text_connect()
    if action == copy_selection_as_text:
        # 以文本形式复制选中的结果。
        self.copy_selection_as_text_connect()