PyQt(Python+Qt)学习随笔:QTableWidget表格部件中行高和列宽的计算方式
QTableWidget表格部件中行高和列宽的计算在Qt提供的资料中内容介绍比较泛,细节说得不清楚,为此老猿花了整整2天时间进行反复摸索,最终将行高和列宽的计算方法研究明白了,在此整理
一、对列宽的计算:
对QTableWidget表格部件的每个项的列宽计算方式如下:
1.1、获取表头的sectionResizeMode属性
通过QTableWidget.horizontalHeader()方法取部件的水平表头,通过表头的方法取表头的sectionResizeMode属性。
关于sectionResizeMode请参考《PyQt(Python+Qt)学习随笔:QHeaderView.ResizeMode取值及含义》。
示例代码:
sectionResizeMode = self.tableWidget.horizontalHeader().sectionResizeMode()
1.2、 根据sectionResizeMode不同采用不同方法计算项的列宽
1.2.1、sectionResizeMode=QHeaderView.Stretch
各列平分部件视口的宽度,数据宽度超过列宽时自动换行显示或缩略显示(即只显示部分),但当平分后的宽度小于水平表头的minimumSectionSize时,则宽度设置为minimumSectionSize大小,展示不下的内容会进入视口之外,需要水平滚动才可见。
minimumSectionSize的获取方法示例代码:
minimumSectionSize=self.tableWidget.horizontalHeader().minimumSectionSize()
1.2.2、sectionResizeMode=QHeaderView.Fixed
各列固定列宽为水平表头的defaultSectionSize大小,无法手工调整大小,可以通过编程调用 resizeSection()调整大小,数据超过列宽时将缩略显示。
1.2.3、sectionResizeMode=QHeaderView.Interactive
列宽缺省大小为水平表头的defaultSectionSize大小,可以通过手工或编程调用 resizeSection()调整大小,数据超过列宽时将缩略显示。
1.2.4、sectionResizeMode=QHeaderView.ResizeToContents
- 判断项是否设置了sizeHint,如果没有设置则按项的内容计算列宽,确保所有项的内容在一行上完整展示
- 如果项设置了sizeHint,则取sizeHint的宽和水平表头horizontalHeader().minimumSectionSize()两者之间最大值作为项的列宽。
1.3、计算同列各项(含表头项)的列宽后,取整列所有项列宽的最大值作为该列(该节)的列宽。
二、对行高的计算:
对QTableWidget表格部件的每个项的行高计算方式如下:
2.1、获取表头的sectionResizeMode属性
通过QTableWidget.horizontalHeader()方法取部件的水平表头,通过表头的方法取表头的sectionResizeMode属性,
示例代码:
sectionResizeMode = self.tableWidget.verticalHeader().sectionResizeMode()
2.2、 根据sectionResizeMode计算项的列宽
2.2.1、sectionResizeMode=QHeaderView.Stretch
各行平分部件视口的高度,当平分高度小于竖直表头的minimumSectionSize()值时,项的高度最小为minimumSectionSize()值,当项高小于实际数据高度时,数据被遮蔽部分可能导致无法识别。当数据超出视口的高度时,需要滚动才能查看未展示数据。
2.2.2、sectionResizeMode=QHeaderView.Fixed
各行固定行高为竖直表头的defaultSectionSize大小,无法手工调整大小,可以通过编程调用 resizeSection()调整大小。
2.2.3、sectionResizeMode=QHeaderView.Interactive
行高缺省大小为竖直表头的defaultSectionSize大小,可以通过手工或编程调用 resizeSection()调整大小。
2.2.4、sectionResizeMode=QHeaderView.ResizeToContents
- 判断项是否设置了sizeHint,如果没有设置则按项的内容计算项高,确保项的内容在竖直方向没有遮盖
- 如果项设置了sizeHint,则取sizeHint的高和竖直表头verticalHeader().minimumSectionSize()两者之间最大值作为项的高宽。
2.3、计算同行各项的项高后,取整行所有项的项高最大值作为该行的行高。
特别说明:
上述介绍中介绍的是否设置了sizeHint,是指显示调用了项的setSizeHint(QSize size)方法,只要调用了该方法,无论参数size设置为多少,包括QSize(0,0)、QSize(-1,-1)都认为是设置了sizeHint。而如果项没有调用setSizeHint方法去设置sizeHint,此时调用项的sizeHint()方法返回的是QSize(-1,-1),与调用设置为QSize(-1,-1)时的sizeHint()返回值一样无法区分,应该是Qt和PyQt采用了其他方式标记是否进行过设置。

老猿Python,跟老猿学Python!
PyQt(Python+Qt)学习随笔:QTableWidget表格部件中行高和列宽的计算方式的更多相关文章
- PyQt(Python+Qt)学习随笔:QWidget部件的palette属性以及ColorGroup、colorRole的用途和含义
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 1.palette属性 QWidget部件的palette属性用于控制 ...
- PyQt(Python+Qt)学习随笔:利用QWidget部件的palette以及ColorGroup、colorRole局部调整部件的特定范围颜色
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 在<PyQt(Python+Qt)学习随笔:QWidget部件的 ...
- PyQt(Python+Qt)学习随笔:Qt Designer中部件的autoFillBackground属性
autoFillBackground属性可以确认部件背景是否自动填充,如果自动填充,Qt会在调用Paint事件之前填充部件的背景.使用的颜色由部件调色板中的QPalette.window 角色定义(关 ...
- PyQt(Python+Qt)学习随笔:Qt Designer中部件的accessibleDescription和accessibleName辅助阅读属性
accessibleDescription和accessibleName属性都是用于残疾人辅助阅读的,这两个属性都有国际化属性(关于国际化请参考<PyQt(Python+Qt)学习随笔:Qt D ...
- PyQt(Python+Qt)学习随笔:Qt Designer中部件的toolTip、toolTipDuration、statusTip、whatsThis属性
toolTip属性 toolTip属性设置部件的toolTip提示信息,toolTip提示信息在鼠标放到控件上会浮动出一个小框显示提示信息.默认情况下,仅显示活动窗口子部件的toolTip,可以通过在 ...
- PyQt(Python+Qt)学习随笔:部件的大小策略sizePolicy的含义
在Qt Designer中的每个部件,除了设置部件的位置(geometry)之外,还可以指定部件的大小策略sizePolicy.部件的sizePolicy用于说明部件在布局管理中的缩放方式,当部件没有 ...
- PyQt(Python+Qt)学习随笔:Qt Designer中QAbstractButton派生按钮部件的shortcut 属性
shortcut 属性保存与按钮关联的快捷键.可以使用shortcut()和setShortcut(QKeySequence)访问和设置该属性. 关于这个属性官网介绍的不多,经老猿实际验证,它与tex ...
- PyQt(Python+Qt)学习随笔:Qt Designer中QAbstractButton派生按钮部件的icon属性和iconSize属性
icon属性 icon属性保存按钮上展示的图标,图标的缺省大小由图形界面的样式决定,但可以通过 iconSize 属性进行调整. 图标的几种子属性状态的含义与QWidget的windowIcon属性相 ...
- PyQt(Python+Qt)学习随笔:Qt Designer中spacer部件的sizeHint属性
在两种Spacer部件中都有sizeHint属性,在<PyQt(Python+Qt)学习随笔:Qt Designer中部件的三个属性sizeHint缺省尺寸.minimumSizeHint建议最 ...
随机推荐
- c#导入文件
string[] lines = System.IO.File.ReadAllLines(@"C:\Users\Administrator\Desktop\2.txt",Encod ...
- Flink的sink实战之三:cassandra3
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Redis系列文章-数据结构篇
Redis系列文章 前言: 工作原因,在学习mybatis知识后,2个月没有补充新的知识了,最近拿起书本开始学习.打算写下这个Redis系列的文章. 目录结构如下: Redis内置数据结构 Redis ...
- (2)ElasticSearch在linux环境中集成IK分词器
1.简介 ElasticSearch默认自带的分词器,是标准分词器,对英文分词比较友好,但是对中文,只能把汉字一个个拆分.而elasticsearch-analysis-ik分词器能针对中文词项颗粒度 ...
- 动态JavaWeb工程的架构问题
B/S 网络应用的分层 前端(表示层) 后端( 业务逻辑层, 数据库访问层 ) 分层的目的->分模块->解耦 1,表示层---和用户直接交互 html,js,css, servlet 2, ...
- DP中环形处理 +(POJ 1179 题解)
DP中环形处理 对于DP中存在环的情况,大致有两种处理的方法: 对于很多的区间DP来说,很常见的方法就是把原来的环从任意两点断开(注意并不是直接删掉这条边),在复制一条一模一样的链在这条链的后方,当做 ...
- linux中5种方法过滤出文件夹ls -F ls -p grep、find快速查找过滤目录
1.ls -l , 根据颜色区分目录和文件2.ls -l, 以d开头的是目录 ls -l | grep "^d" 过滤以d开头的3.ls -l , 输入结果中第二列中大余1的是目录 ...
- 面试官:小伙子,你给我说一下你对MySQL索引的理解吧
一.索引是什么? 索引是帮助MySQL高效获取数据的数据结构. 二.索引能干什么? 索引非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要.索引能够轻易将查询性能提高好几个数量级,总 ...
- 思维导图iMindMap可以在哪些领域应用
生活工作中你常常会遇到许多力所不能及的事情,感到无奈.茫然,这时候你急需一个帮手来帮你打破困境,思维导图就是这样的救世主,至于它有哪些力所能及的事情就是下面小编要跟你讲的. 你是否经常遇到过这样的情况 ...
- 在FL Studio中如何使用Patcher插件
Patcher作为FL Studio20中自由度极高的一款插件,深受当今制作人的喜爱.其主要功能用于整合混音插件的输入与输出以及自定义控制器等功能.下面分几部分来介绍这个插件. Patcher的Map ...