PyQt(Python+Qt)学习随笔:树型部件QTreeWidget中的项编辑方法editTriggers、editItem和openPersistentEditor作用及对比分析

qt tableview setEditTriggers解析 此属性是由EditTrigger定义的标志的选择,并使用OR运算符组合。只有在此属性中设置了执行的操作,视图才会启动对项目的编辑。EditTrigger是QAbstractItemView Class的Public Function。如果想要单击开启编辑器而不是双击,则需要设置为CurrentChanged。此属性保存哪些操作将启动项编辑。 阅读详情

在树型部件QTreeWidget中,有三种方法触发进行项数据的编辑:editTriggers触发编辑、editItem触发编辑和openPersistentEditor打开持久编辑器。

1、editTriggers触发编辑

在《PyQt(Python+Qt)学习随笔:QAbstractItemView的editTriggers属性以及平台编辑键(platform edit key )》介绍了QAbstractItemView可以通过设置editTriggers来触发编辑,而QTreeWidget是QAbstractItemView类派生的,继承了该属性,因此通过设置该属性为非NoEditTriggers的值即可触发编辑。

editTriggers可以在Qt Designer中设置,如图:
在这里插入图片描述
也可以调用setEditTriggers(EditTriggers triggers)来触发,关于EditTriggers 枚举类请参考PyQt(Python+Qt)学习随笔:QAbstractItemView的editTriggers属性以及平台编辑键(platform edit key )》。

注意:

要使得editTriggers能触发编辑,必须将项设置为可编辑的,但老猿验证发现QTreeWidget的flags()值默认为61,不能编辑(请参考《PyQt(Python+Qt)学习随笔:Model中项的标记flags取值及枚举类型Qt.ItemFlag》)。因此必须设置项为可编辑的,要能对项进行编辑必须使用setFlags设置项为可编辑。可以参考如下代码示例来设置:
item.setFlags(item.flags() | QtCore.Qt.ItemIsEditable)

2、editItem触发编辑

QTreeWidget提供了进行项编辑的方法editItem,调用语法如下:

editItem(QTreeWidgetItem item, int column = 0)
注意:
  • editItem方法生效必须设置项的标记flags为可编辑
  • editItem一次只能触发一个项指定的列进行编辑,一旦退出编辑状态(如改变焦点),除非再次调用editItem或设置editTriggers触发编辑或打开永久编辑器否则对应项不能再编辑
  • 连续多次调用editItem,中间没有触发事件处理,则只有第一次调用生效,后续调用无效
3、openPersistentEditor打开持久编辑器

上面介绍editItem时说明了editItem只能触发一次编辑,可以说进入临时编辑状态,一旦退出编辑除非再通过相关方式触发编辑否则项不可再编辑。与此相对应,QTreeWidget还提供了一种一旦打开编辑状态就可以随时再次编辑,除非显示关闭编辑状态,这种方式就是打开持久编辑器。调用方法如下:

openPersistentEditor(QTreeWidgetItem item, int column = 0)

该方法没有返回值。

注意:
  • openPersistentEditor在在树型部件设置了editTriggers为NoEditTriggers时也有效
  • openPersistentEditor在在树型部件项的flags值设置为不能编辑情况下,也能触发项编辑,并且除非调用closePersistentEditor()方法,否则对应项的对应列一直都能编辑
4、项编辑小结

树型部件中项的编辑方法包括editTriggers触发编辑、editItem触发编辑和openPersistentEditor打开持久编辑器,这三种方法:

  • editTriggers触发编辑、editItem触发编辑必须要求项的标记flags支持编辑,而openPersistentEditor对项标记没有要求
  • 在所有项flags支持编辑的情况下,在树型部件设置了editTriggers为AllEditTriggers时,如果在触发编辑的事件中调用editItem,实际能编辑的项是editTriggers触发的项,editItem指定的项无法编辑。老猿分析这与editItem连续调用相同,只有先触发的才有效
  • editTriggers触发编辑、editItem触发编辑都是一次性的,一旦退出编辑状态除非再次触发,否则不能再进行编辑,但openPersistentEditor是持久编辑,可以随时进行编辑,除非调用closePersistentEditor()方法关闭编辑状态

三种方法各有特色,关键是看在什么时候使用,editTriggers方式是使用方便,只需要树型部件中设置一次即可,而editItem和openPersistentEditor 必须按项的列指定,但可以方便控制数据不能随意修改。

老猿Python,跟老猿学Python!

QT-使TreeWidget的项目可编辑 效果: 主要 阅读详情

相关推荐

QT:QTableWidget

基本设置 设置行列数 this->setColumnCount(2); this->setRowCount(2); 设置表头 QStringListheader; header.append(QString::fromLocal8Bit("姓名")); header.append(QString::fromLocal8Bit("成绩")); this->setHor...

AI.PLAY 806

PyQt学习随笔:Model/View中设置视图数据项可编辑的方法

在视图对象中调用setEditTriggers方法可以设置视图对象中的数据项是否可编辑以及编辑的触发方法。 setEditTriggers方法是QAbstractItemView的方法,语法如下: setEditTriggers(QAbstractItemView.EditTriggers triggers) 其中参数QAbstractItemView.EditTriggers triggers为...

老猿Python 2667

editItem和openPersistentEditor的作用及对比分析

在这个示例中,我们只是简单地打印被编辑项的文本和列索引,但你可以根据自己的需求进行处理。当用户双击表格中的某个项时,将调用编辑项函数,并将双击的项和列索引作为参数传递给该函数。当用户双击列表中的某个项时,将调用编辑项函数,并将双击的项作为参数传递给该函数。编辑项函数用于编辑列表或表格中的特定项。editItem函数适用于列表或表格中的特定项的编辑,通常需要一个额外的编辑界面来显示和修改数据。编辑项函数适用于列表或表格中的特定项的编辑,通常需要一个额外的编辑界面来显示和修改数据。

JieLun_C的博客 354

C++语言环境下setEditTriggers函数用法

在C++环境下,setEditTriggers 函数是 QAbstractItemView(以及继承自它的类如 QTableWidget、QTreeWidget 和 QListView)中的一个成员函数,用于设置表格或列表视图的编辑触发条件。这个函数决定了何时用户可以通过单击、双击或键盘输入来编辑单元格或项。

ffffffeiyu的博客 1168

使用Python PyQt库中的QTreeWidget控件是展示树形数据结构的一个好方法

其中,topLevelItemCount属性可以获取QTreeWidget控件中第一层节点的数量,非常方便。下面我们就来看一下如何使用。首先,需要导入PyQt库中的QTreeWidget和QTreeWidgetItem类,这两个类分别用于创建树形控件和树形控件中的节点。以上就是使用QTreeWidget控件的topLevelItemCount属性获取第一层节点数量的方法。以上代码将输出:Top level item count: 3,说明树形控件中第一层节点的数量为3。

与其临渊羡鱼,不如退而结网 970

PyQt中QAbstractItemView的editTriggers属性和平台编辑键

在QAbstractItemView中,有一个重要的属性叫做editTriggers,它定义了触发编辑操作的条件,使用户能够对数据进行修改。通过使用editTriggers属性,我们可以根据需求来定义触发编辑操作的条件,从而提供更好的用户体验和数据交互性。方法将编辑触发条件设置为双击、单击选中和平台编辑键。这样,用户在双击某个项、单击选中项或按下平台编辑键时,就可以触发相应的编辑操作。其中,平台编辑键指的是与平台相关的键盘按键,例如在Windows上是F2键,在macOS上是Return键。

HackNebulaZ的博客 481

Qt的复杂代理使用总结

Qt代理使用,代理一直显示,复杂控件的代理。

北辰的博客 6008

PyQt入门:QTreeWidget在Model/View架构中的使用详解

在实际使用中,我们通常需要根据数据动态创建树形结构。这时,我们可以将QTreeWidget与QStandardItemModel配合使用,QStandardItemModel可以将数据组织成树形结构,并提供了各种方便的方法来操作树形结构数据。QTreeWidget的使用非常简单,首先需要创建一个QTreeWidget对象,然后创建根节点,并添加子节点和子节点的子节点。上述代码创建了一个包含根节点、两个子节点以及一个子节点的子节点的QTreeWidget对象,并将其显示在屏幕上。

2301_78484069的博客 518

PyQt(Python+Qt)学习随笔:QTableWidget项编辑方法editItem、openPersistentEditor

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 1、触发编辑项的editItem方法 QTableWidget提供了触发项编辑的方法,调用语法如下: editItem(QTableWidgetItem item) 注意: editItem方法生效必须设置项的标记flags为可编辑 editItem一次只能触发一个项进行编辑,一旦退出编辑...

老猿Python 4446

PyQt5高级界面控件之QTreeWidget

在上述代码中,我们通过连接QTreeWidget.itemChanged信号来捕获项目更改事件,并在handleItemChanged()方法中处理该事件。在handleItemChanged()方法中,我们首先检查项目的状态是否被修改,并据此输出相应的结果。在上述代码中,我们首先定义了一个QMainWindow类,并在其__init__()方法中创建了一个QTreeWidget对象。我们可以使用QTreeWidget.itemChanged信号来监测项目改变的事件,并在该事件发生时作出相应的处理。

. 1472

Model/View模块中Delegate的扩展:持久Delegate(一)

注:以下内容需要熟悉Qt的Model/View模块,如尚未掌握该模块的基础知识,不建议阅读。 在处理大规模,结构化数据的时候,Qt的Model/View非常好用,但其界面形式较为单一,不太符合日益增长的审美需求。有时候,Model/View在处理数据时,虽然可以完成相应的功能,但界面处理上总好像差点意思。 在Model/View中,Delegate负责数据项item的显示和交互,我们可以...

qq_34305316的博客 3483

PyQt5之树形控件QTreeWidget使用详解 - 创建、增删节点、遍历、美化等常用功能案例解析

本文整理了PyQt(PySide) QTreeWidget 的常用方法与使用技巧,包括类继续关系、常用方法与信号,QtreeWidget树的创建、QTreeWidgetItem条目的编辑,树的各种设置、节点的拖拽、双击编辑、弹出式菜单、样式设置与树中信息的填充等,适合不同层次的开发者参考。

qq_58168857的博客 1万+

Unity 2021 LTS安装避坑指南:从下载到第一个3D项目的完整流程

本文提供了一份详尽的Unity 2021 LTS安装与首个3D项目创建指南。内容涵盖从Unity Hub下载、版本选择、模块安装避坑,到编辑器界面解析、创建旋转立方体脚本的完整流程,旨在帮助初学者快速搭建稳定开发环境并上手核心操作。

mango的博客 310

PyQt(Python+Qt)学习随笔:QAbstractItemView的editTriggers属性以及平台编辑键(platform edit key )

老猿Python博文目录 老猿Python博客地址 editTriggers属性 editTriggers属性用于确认哪些用户操作行为会触发ItemView中的数据项进入编辑模式。 此属性是由枚举类EditTrigger定义的选择标志集合,多个标志使用或运算符进行组合。只有在用户操作为此属性中设置的操作时,视图中的数据项才会进入编辑模式。 平台编辑键 平台编辑键老猿在机器上逐一测试,发现在W...

老猿Python 3301

从临床试验到互联网AB测试:边缘结构模型(MSM)如何解决‘时依性混杂’这个老大难问题

本文探讨边缘结构模型(MSM)如何解决时依性混杂问题,适用于临床试验和互联网AB测试。通过逆概率加权(IPTW)等方法,MSM能有效剥离混杂效应,准确评估长期干预效果。文章结合跨领域案例,详细解析MSM的核心原理、实施步骤及在推荐算法效果评估中的实战应用,帮助读者掌握这一先进因果推断工具。

weixin_28725949的博客 207

基因家族快速鉴定指南:Windows平台下的HMMER实战解析

本文详细解析了在Windows平台下使用HMMER工具进行基因家族快速鉴定的完整实战流程。通过手把手指导,从软件获取、数据准备到模型构建与序列搜索,帮助生物信息学新手无需Linux环境,即可高效完成bZIP转录因子等家族的鉴定工作,大幅降低分析门槛。

weixin_29255731的博客 460

用自定义信号(不仅仅是点击)触发QTableView的带有图标的单元格处于编辑状态

有时可能不想通过鼠标点击QTableView的单元格使其处于编辑状态,而是想通过绑定槽函数的方式去实现。 下面进行说明: openPersistentEditor(Index);打开编辑 closePersistentEditor(Index);关闭编辑 我的表格第一列的单元格需要编辑,并且单元格内有图标,编辑时图标消失,完成时图标显示。 打开编辑比较好处理,主要是关闭编辑,需要重写...

小灰灰的博客 3364

刚入职,软件测试岗,有点迷茫不知道下一步怎么提升自己

软件测试前景和发展都是不错,已经入了软件测试这行业就坚挺下去

大白的博客 2218

QTreeWidgetItem可编辑

QTreeWidgetItem* pChildItem = new QTreeWidgetItem(pParentItem); //设置可编辑、可选择。 pChildItem ->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable); pChildItem ->setText(0, "XXXX"); pChildItem ->setData(0, ROLE, structComItem.C);//设.

sinat_33419023的博客 2290

高通平台 Android T 蓝牙技术全解析:A2DP 与 AVRCP 核心代码路径与交互流程

A2DP 接收端 - 连接流程(AVDTP 打开)

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 289

cefshap(C#)定义浏览器的右键菜单

菜单效果:复制(自带),搜索文本,打开链接,复制链接,刷新,检查,关于 public class MenuHandler : IContextMenuHandler { //public event Action<string> PopupRequest; void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrows

无线智能模块 可视DIY智能专家 1705

QTreeView使用总结2,常用API介绍

1,简介上一篇展示了一个最简单的QTreeView示例,只是刚刚能显示数据而已。实际使用中,需要对QTreeView的各项属性进行配置,下面介绍一下常用设置项。先看最终效果:2,QTreeView常用设置项void MainWindow::InitTree() { //1,QTreeView常用设置项 QTreeView* t = ui-&gt;treeView; t-&g...

逆枫 -- C++/Qt工程师、创业者 9788

【SpringCloud】5、Spring Cloud Gateway网关路由规则

Spring Cloud Gateway 创建 Route 对象时, 使用 RoutePredicateFactory 创建 Predicate 对象,Predicate 对象可以赋值给 Route。

JACKAL 3万+

PyQt6 QTreeWidget树控件

由于QTreeWidget类继承自QTreeView,因此,它具有QTreeView的所有公共方法,另外,它还提供了一些自身特有的方法。QTreeWidget树控件,它提供了一个使用预定义树模型的树视图,它的每一个树节点都是一个QTreeWidgetItem。

java1234的博客 950

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Python-PYQT QTreeWidget的使用

工具/版本 (1)安装环境:Windows7 64bit (2)使用版本Python3.6 (3)PYQT5 (4)eric6   一,QTreeWidget的基本使用 基本使用可以参考这篇Pyqt5 QTreeWidget使用 二,补充一些点击响应时间 1,使用复选框,点击复选框,获取当前复选框状态 self.tree.itemClicked.connect(self.is...

撒门摩尔的博客 6136

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: PyQt(Python+Qt)学习随笔:树型部件QTreeWidget中使用sortItems进行项排序
下一篇: PyQt(Python+Qt)学习随笔:树型部件QTreeWidget中判断项是否首列跨所有列展示的isFirstItemColumnSpanned方法
LaoYuanPython
LaoYuanPython 2020年博客之星Top3 2020年博客之星Top3 领域专家: Python技术领域 领域专家: Python技术领域
博客等级 码龄8年 15万+粉丝 1324原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值