当前位置: 首页 > news >正文

pyqt的QWidgetList如何多选?如何按下Ctrl多选?

 

 通过设置setSelectionMode(QAbstractItemView.MultiSelection),可以实现QWidgetList的多选。

 但是上述结果不太符合我们需求。设置多选模式后,只需鼠标点击就可以选择多个条目

 我希望按下Ctrl键时才进行多选,仅鼠标单击的话,只进行单选。如何实现?

下面是样例,维护一个变量ori_multi_select,记录ctrl的按下状态

class MainView(QMainWindow):def __init__(self):super().__init__()self.ui =u1.Ui_MainWindow()self.ui.setupUi(self)#==================初始化==================self.ui.ori_list.setSelectionMode(QAbstractItemView.MultiSelection)self.grabKeyboard()#==================变量==================self.ori_multi_select=True#==================信号与槽==================self.ui.ori_list.currentRowChanged.connect(self.change_selected) # 当鼠标选择某一行时触发def change_selected(self,index:int):print(f"选中行数:{index}\n信号触发")if index<0:returnif not self.ori_multi_select: # 如果没有不处于多选模式(没有按住ctrl键)self.ui.ori_list.clearSelection() # 清除选择状态def keyPressEvent(self, event: QKeyEvent) -> None:# 如果按下ctrl键if event.key() == Qt.Key_Control:self.ori_multi_select = True # 进入多选模式def keyReleaseEvent(self, event: QKeyEvent) -> None:# 如果松开ctrl键if event.key() == Qt.Key_Control:self.ori_multi_select = False # 退出多选模式

http://www.lryc.cn/news/385018.html

相关文章:

  • 【电路笔记】-MOSFET放大器
  • Ubuntu 20.04安装显卡驱动、CUDA、Pytorch(2024.06最新)
  • wpf 附加属性 RegisterAttached 内容属性
  • laravel8框架windows下安装运行
  • 如何快速判断IP被墙
  • vitest-前端单元测试
  • Redis 7.x 系列【9】数据类型之自动排重集合(Set)
  • 【LeetCode】每日一题:反转链表
  • 使用Spring Boot创建自定义Starter
  • cmd设置编码为utf8
  • 一次关于k8s的node节点NotReady的故障排查
  • Java变量与标识符
  • AWS无服务器 应用程序开发—第十七章 AWS用户池案例
  • java中的枚举
  • 各种开发语言运行时占用内存情况比较
  • 【基础知识10】label与input标签
  • 【SDV让汽车架构“和而不同”】
  • 面试经验分享 | 驻场安全服务工程师面试
  • SpringBoot 学习笔记
  • Android 13 为应用创建快捷方式
  • PTA—C语言期末复习(选择题)
  • 基于STM32的智能家用空气净化系统
  • 计算机图形学入门18:阴影映射
  • 电机应用相关名词介绍
  • 哈尔滨等保测评解读
  • python接口自动化的脚本
  • pdf转换成cad,这几个cad转换小妙招快码住!
  • 计算机组成原理——系统总线
  • 2024年6月大众点评广州餐饮店铺POI分析20万家
  • 【最佳实践】前端如何搭建自己的cli命令行工具,让自己编码的时候如虎添翼