PyQt学习随笔:QTableWidget的selectedRanges、setRangeSelected访问选中矩形范围的方法

摘要:
使用PyQt开发图形界面Python应用程序Python博客地址当QTableWidget支持选择多个项目时,您可以通过selectedRanges方法返回选定矩形的列表,并通过setRangeSelected方法选择或取消选择指定矩形范围内的项目。QTableWidgetSelectionRange描述基于逻辑项位置的连续矩形范围。

在QTableWidget对项的操作支持选中多个项的情况下,可以通过方法selectedRanges返回选中矩形的列表,通过方法setRangeSelected将指定矩形范围的项选中或去选中。相关方法调用语法如下:

  • list[QTableWidgetSelectionRange] selectedRanges()
  • setRangeSelected( QTableWidgetSelectionRange range, bool select)

注:

案例:

为了说明矩形内的项是逻辑项连续,我们来看一个案例:
在这里插入图片描述
上图中的行3和行4通过如下语句交互了可见位置,同时设定选择范围为(1,1)->(2,2):

self.tableWidget.verticalHeader().moveSection(3,2) #将第4行移动到第3行
rect = QtWidgets.QTableWidgetSelectionRange(1, 1, 2, 2) #定义矩形范围为逻辑行为1,列为1(即第二行第二列)到第3逻辑行3逻辑列的项
self.tableWidget.setRangeSelected(rect, True)

通过范围选择后,选中的范围从界面上看却不是连续的,但实际上逻辑项是连续的。

我们通过如下语句输出选中范围:

 def showSelectRect(self):
     selectRect = self.tableWidget.selectedRanges()
     for r in selectRect:
         print(f'({r.topRow()},{r.leftColumn()})-->({r.bottomRow()},{r.rightColumn()})')

针对上图输出的信息如下:

(1,1)-->(2,2)

如果针对上图通过鼠标改变选中范围,如图:
在这里插入图片描述
界面上看起来可见项是连续的,输出矩形选中范围结果如下:

(1,1)-->(1,2)
(3,1)-->(3,2)

显示为两个矩形,不是连续的范围。

PyQt学习随笔:QTableWidget的selectedRanges、setRangeSelected访问选中矩形范围的方法第3张

老猿Python,跟老猿学Python!

免责声明:文章转载自《PyQt学习随笔:QTableWidget的selectedRanges、setRangeSelected访问选中矩形范围的方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇单进程单线程的Redis如何能够高并发Java服务端极光推送整合Ios、Android下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

QT信号槽详解

1         QT信号槽详解 1.1  信号和槽的定义 信号是触发信号,例如按钮的点击触发一个clicked信号,槽是用来接收信号,并处理信号,相当于信号响应函数。一个信号可以关联多个槽函数,信号也可以连接信号。 要使用信号槽,类必须继承与QObject类或者其子类,否则无法识别槽函数错误。在类的定义开头需要添加宏定义Q_OBJECT。如下 clas...

T-sql for xml path使用(转)

参考: http://www.cnblogs.com/langhua/p/4193161.html //用法: FOR XML PATH 方法是用于将查询结果集以XML形式展示 sql: select top 5 p.ContactTypeID,p.ModifiedDate,p.Name from [Person].[ContactType] p for...

scss之&的用法

今天看到一段用scss写的工作代码: .el-checkbox__inner {   &:hover {     border-color: #42b983;   } } 其中,&的作用是什么呢?我查阅了以下资料,&是父选择器标识符。 即可把以上代码编译成 .el-checkbox__inner:hover { border...

报错解决

"libcudart.so.8.0 cannot open shared object file: No such file or directory" 解决办法是将一些文件复制到/usr/local/lib文件夹下: #注意自己CUDA的版本号! sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /us...

ElementUI中的el-table怎样实现绑定对象数组时每一列不同控件的动态数据绑定

场景 ElementUI中的el-table中实现动态添加一行、删除一行、清空所有行: https://mp.csdn.net/console/editor/html/107815187 上面实现的效果如下 其中每一行都是动态添加的,每一行对应的是一个对象,每一列对应的是一个对象的属性。 所以整个el-table绑定的数据源就是一个对象的数组。 但是在...

el表达式具体解释

引用内容百度百科(http://baike.baidu.com/view/1488964.htm) 參考百度百科。然后自己又加入了一部分自己感觉实用的东西,整理一下希望对大家有所帮助! E L(Expression Language) 目的:为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供...