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建议最 ...
随机推荐
- vue踩坑
1. 双向绑定的对象 改变或新增其属性 DOM不刷新问题 var obj = { "attr1": "1", "attr2": [2] }; ...
- IOC容器小结
IOC容器: Ioc-Inversion of Control,即"控制反转",就是具有依赖注入功能的容器,是可以创建对象的容器,IOC容器负责实例化.定位.配置应用程序中的对象及 ...
- tensorflow-gpu2.1.0报错 so returning NUMA node zero解决办法
>>> print('Default GPU Device: {}'.format(tf.test.gpu_device_name()))2020-06-06 10:14:08.92 ...
- css水平垂直居中 三种最常用的方式
代码在下面,可以直接用. bb两句,个人见解: text-align 是让里面的内容水平居中 line-height 是行高,行高等于元素的高度 就能让内容垂直居中 left和top 50% 是根据h ...
- C++实现学校运动会管理系统
本文实例为大家分享了C++实现学校运动会管理系统的具体代码,供大家参考,具体内容如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...
- Hopfield Network 霍普菲尔德网络入门
简介 Hopfield Network (霍普菲尔德网络),是 Hopfield 在1982年提出的一种基于能量的模型,发表的文章是 Neural networks and physical syst ...
- Docker 实战(4)- 结合 Jenkins + Gitlab 完成自动化测试的持续集成实战
如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html Jenkins 关联 Gitla ...
- [MIT6.006] 20. Daynamic Programming II: Text Justification, Blackjack 动态规划II:文本对齐,黑杰克
这节课通过讲解动态规划在文本对齐(Text Justification)和黑杰克(Blackjack)上的求解过程,来帮助我们理解动态规划的通用求解的五个步骤: 动态规划求解的五个"简单&q ...
- kernel 目录
1. 直接控制硬件 arch : Soc 相关 drivers : 硬件驱动 2. block: 块设备操作逻辑 kernel : 内核实现 net mm : 内存管理 fs : 各种文件系统实现 ...
- mysql之事物
1.事物,在事物中的sql语句,要么全部执行成功,要么全部执行失败,不会出现一条sql执行成功了,一条sql执行失败的问题. 2.开启事物:就是关闭mysql自己的自动提交事物的方式 3.commit ...