PyQt(Python+Qt)学习随笔:QTableWidget表格部件中行高和列宽的计算方式

PyQt学习笔记:QTableWidget中行高和列宽的计算方式(Python) 然后,通过添加表格内容后,调用resizeRowsToContents()方法和resizeColumnsToContents()方法,自动计算并设置所有行的行高和所有列的列宽。然后,通过调用setRowHeight()方法,将第2行的行高设置为30像素。该方法接受两个参数,第一个参数是要设置列宽的列索引,第二个参数是列宽的像素值。该方法接受两个参数,第一个参数是要设置行高的行索引,第二个参数是行高的像素值。通过以上方法,我们可以灵活地设置和计算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
  1. 判断项是否设置了sizeHint,如果没有设置则按项的内容计算列宽,确保所有项的内容在一行上完整展示
  2. 如果项设置了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
  1. 判断项是否设置了sizeHint,如果没有设置则按项的内容计算项高,确保项的内容在竖直方向没有遮盖
  2. 如果项设置了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!

PyQt5表格控件QTableWidget QTableWidget QTableWidget 是 Qt 中的表格组件类。在窗体上放置一个 QTableWidget 组件后,可以在 Property Editor 里对其进行属性设置,双击这个组件,可以打开一个编辑器,对其 Colum、Row 和 Item 进行编辑。 一个 QTableWidget 组件的界面基本结构(加样式后) QTableWidget类中的常用方法 常用方法 方法描述 setROwCount(int row) 设置QTableWidget表格控件的行数 se 阅读详情

相关推荐

Vue3项目实战:CKEditor5富文本编辑器从安装到隐藏不需要的功能

本文详细介绍了在Vue3项目中集成并深度定制CKEditor5富文本编辑器的完整流程。通过分析其模块化架构,指导开发者从标准构建出发,移除图片、表格等冗余插件,创建专属轻量构建,从而显著减小打包体积并提升用户体验。文章结合实战代码,涵盖了环境搭建、自定义构建配置、高级优化技巧等关键步骤。

weixin_29016833的博客 283

PyQt学习随笔:QTableWidget项sizeHint的作用以及与QHeadView的sectionResizeMode、ResizeToContents的关系

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在学习QTableWidgetItem的sizeHint()方法时,Qt自带材料中介绍sizeHint为项的缺省大小,如果没有设置则根据项的数据自动计算项的大小。但老猿试了好久都没明白sizeHint的作用,查阅资料也没有找到相关资料,最终经过2天的反复测试和摸索,终于明白了这个属性的作用。 Q...

老猿Python 3041

Windows下MMdetection3D保姆级安装指南(含CUDA和PyTorch版本避坑)

本文提供Windows平台下MMdetection3D的完整安装指南,重点解决CUDA与PyTorch版本匹配问题。从环境准备到关键组件安装,详细介绍了CUDA Toolkit选择策略、PyTorch精准安装步骤,以及MM系列组件的安装顺序和常见错误解决方案,帮助用户顺利完成3D目标检测环境的配置。

weixin_42628941的博客 491

qtablewidget 设置列宽行高遇到的问题

tablewidget 使用中一些问题

foxgod的专栏 3428

LIN总线从入门到精通:低成本汽车通信协议原理与实战

在汽车电子和嵌入式系统中,串行通信协议是实现分布式控制的关键技术。其中,LIN(Local Interconnect Network)总线作为一种专为低成本应用设计的单主多从网络协议,其核心原理在于通过简化的“领导-汇报”通信模式,在满足车身控制、传感器数据采集等场景需求的同时,将硬件与布线成本降至最低。LIN总线采用标准化的帧结构,包含间隔场、同步场和受保护标识符场,并依赖调度表来管理通信时序,确保了网络的确定性与可靠性。其技术价值在于为车窗、座椅、灯光等非安全关键系统提供了高性价比的解决方案,是构建分层

weixin_29185167的博客 260

从科研小白到动物行为分析:我的DeepLabCut 3.0安装与初体验全记录

本文记录了从科研小白到成功安装并使用DeepLabCut 3.0进行动物行为分析的全过程。详细介绍了Anaconda环境配置、CUDA版本选择、DeepLabCut安装步骤及验证方法,并分享了初体验中的实用技巧和跨学科研究心得,为生物研究者提供了AI工具应用的实战指南。

weixin_30235225的博客 402

Qt学习笔记(3):QTableWidget中选中某个单元格高亮并获取该行数据

当鼠标在QTableWidget表格中点击某一个单元格时,将该单元格所在的行高亮,并且将该单元格所在的行的数据进行保存。

weixin_45832156的博客 4129

汽车软件工程师必看:ASPICE流程实战指南(附完整产物清单)

本文为汽车软件工程师提供ASPICE流程实战指南,详细解析如何搭建合规开发环境、各阶段文档产出清单及工具链整合策略。通过实战案例和模板资源,帮助团队高效实施ASPICE标准,提升软件开发质量与效率。

weixin_29230805的博客 470

QTableWidget 设置列宽行高大小的几种方式及其他常用属性设置

11. 设置表格的单元为只读属性,即不能编辑。12. 显示QTableWidget组件中的线。10.设置选中时为整行选中。如数据也需要设置列数,否则可能不显示;13.去除选中虚线框。14.设置非单元滚动。15.隔行交替背景色。

q610098308的专栏 2万+

Fluent 中多相流模型全面解析

3.颗粒或液滴在连续相中的运动:若关注颗粒或液滴在连续相中的运动轨迹、分布规律以及与连续相的相互作用,如喷雾干燥、气力输送等过程,Eulerian-Lagrangian 模型则是最佳选择。Eulerian-Eulerian 模型可以准确模拟气体在固体颗粒中的流动情况,包括颗粒的流化状态、气体与颗粒之间的传热传质过程,为气固流化床的优化设计和操作提供依据。通过该模型,可以了解混合器内不同位置的混合程度、颗粒的运动轨迹以及液固相间的相互作用,从而改进混合器的结构和操作条件,提高混合效率。

khhdp的博客 3086

Google Earth Engine 红树林制图方法的代码(三个模块)

谷歌地球引擎红树林制图方法(GEM)提供了一种直观、易用且可复制的工具,适用于广泛的非专业沿海管理者和决策者。该工具全面回顾并整合了相关的红树林遥感文献,并利用云计算的力量,包括简化的基于图像的潮汐校准方法。GEM 可免费用于非营利用途,并在 GEE 中运行,包含全面且详细注释的代码。GEM 专门设计用于绘制全球范围内多日期红树林分布并量化其动态变化。目前可用的工具和方法未能充分利用沿海管理者通常持有的丰富地方专业知识——GEM 致力于填补这一空白,帮助结合地方专业知识与 GEE 的云计算能力。

此星光明博客 559

PyQt5中动态设置QTableWidget表格添加数据,并且设置表格的行高,列宽

1、首先实例化QTableWidget对象, self.tableWidget = QtWidgets.QTableWidget(self) 2、设计表格的行数和列数,以及绝对定位,当然你也可以根据自己的需求进行排版 self.tableWidget.setGeometry(QtCore.QRect(40, 100, 447, 268)) self.tableWidget.setObje...

水月灯花的博客 2万+

PCIe协议之 Equalization篇 之 谈谈几种模式

对于两端有能力最高支持 32 GT/s 及以上速率的设备,如果把目标速度设置为 8 GT/s 或 16 GT/s 速率,是不建议采用 Bypass-Equalization-to-Highest-Rate 模式的,即便采用了,也不会针对 8 GT/s 或 16 GT/s 的目标速率进行 EQ。对于支持 32 GT/s 及以上速率的设备,其可能根本无需工作在 8 GT/s 或 16 GT/s 速率,这时再针对 8 GT/s 或 16 GT/s 速率进行 EQ,多少有点浪费。

那么菜的博客 564

PyQt(Python+Qt)学习随笔:QTableWidget中表格各列平均分配宽度的两种方法

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在QTableWidget表格部件中,如果需要实现表格中各列要占满部件中的可用空间,同时实现各列平分所有空间,有两种方法来实现。 方法一、设置水平表头的sectionResizeMode为Stretch 当水平表头的sectionResizeMode设置为QHeaderView.Stretch后...

老猿Python 3607

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

PyQt(Python+Qt)学习随笔:QTableWidget的currentItem、rowCount、columnCount等部件状态属性访问方法

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 老猿将QTableWidget表格部件中反映部件当前情况的一些方法归类为部件状态访问方法,包括部件的行数、列数、当前项、当前行、当前列等属性访问方法。 1、行数rowCount QTableWidget的rowCount属性保存表格部件中的行数,在QTableWidget创建时如果没有指定行数,...

老猿Python 6111

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

PyQt QTableWidget 表格控件的使用

PyQT开发图形界面应用时,用 QTableWidget 表格控件可用表格方式显示从列表、数据库, excel 等读出的二维数据。如果你想用表格方式显示自已建立的 Model 模型数据,请采用QTableView类。

Python技术探索 8768

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

11 PyQt5 控件之QTableWidget

简便控件QTableWidget

小泥人日常 6411

24. [Python GUI] PyQt5中的模型与视图框架-表格部件QTableWidget

QTableWidget 类继承自 QTableView,该类是一个由 Qt 实现的标准的表格部件,该类的数据项由 QTableWidgetItem 类管理。当前单元格(或当前项目)与当前索引或当前选择是相同的,即可以同时选择多个单元格,但只能有一个当前单元格,当编辑单元格时,只会编辑当前单元格。当前单元格通常具有焦点边框。单元格和项目的区别(重要概念): 项目是指 QTableWidgetItem 类的对象,因此空单元格是不含有项目的。当在空单元格上单击鼠标时,会发送 cellClicked()信号,但不

hubing_hust的专栏 1万+

PyQt(Python+Qt)学习随笔:QTableWidget的findItems和selectedItems搜索项和访问选中项方法

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 1、搜索项 在表格部件中,可以根据文本以及匹配模式来搜索满足条件的项,调用语法: list[QTableWidgetItem] findItems( str text, Qt.MatchFlags flags) 返回值为所有满足条件的项构成的列表,如果没有找到匹配项,返回空列表。 Qt.Matc...

老猿Python 4649

PyQt(Python+Qt)学习随笔:QTableWidget的属性

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 1、概述 除了从父类继承的属性外,在Designer中QTableWidget只有两个属性,就是行数rowCount和列数columnCount,另外还有一部分就是用于设置表头的属性。如图: 2、行数rowCount QTableWidget的rowCount属性保存表格部件中的行数,在QTa...

老猿Python 2330

第15.28节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QTableWidget详解

一、引言 表格部件为应用程序提供标准的表格显示工具,在表格内可以管理基于行和列的数据项,表格中的最大数据项数为总行数和总列数的乘积,另外在表格中可以设置水平和垂直标题。 表格部件对应类为QTableWidget ,QTableWidget 表格部件中的项类型为QTableWidgetItem类。QTableWidget 从QTableView派生的子类,内置默认模型,如果表格展现的应用需要使用自己...

老猿Python 4203

PyQt(Python+Qt)学习随笔:QTableWidget的获取指定位置项的item和itemAt方法

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 1、获取指定行和列的项 根据行和列可以获取对应位置的项,调用语法如下: QTableWidgetItem item(int row, int column) 如果对应位置没有项,则返回None。 2、获取指定位置的项 QTableWidget的itemAt方法通过视口内的坐标点获取对应坐标位置的...

老猿Python 6739

PyQt(Python+Qt)学习随笔:QTableWidgetItem项数据的data和setData访问方法

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTableWidget部件中的QTableWidgetItem项数据可以通过项的data( int role) 方法获取项中指定列指定角色的数据,也可以通过setData(int role, QVariant value)方法设置指定角色的数据为value。例如项的文本可以通过data方法和s...

老猿Python 1万+

PyQt(Python+Qt)学习随笔:QTableWidget的takeItem和sortItems方法

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTableWidget中的takeItem方法从表格中取并去除项,sortItems方法对表格中的项按指定列进行排序。 1、从表格中取并去除项的takeItem方法 takeItem方法是从表格部件中取一个项返回并从部件中删除该项,调用语法如下: QTableWidgetItem takeIt...

老猿Python 2552

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

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

老猿Python 4446

PyQt5.QtWidgets.QTableWidgetItem||QtableWidget结构与用法

QTableWidgetItem 官方文档 PyQt5.QtWidgets.QTableWidgetItem类提供了QTableWidget类的一项。称为表项。 表项通常可以包含文本,图标或复选框。 插入到QTableWidget表中具体位置 newItem = QTableWidgetItem("新单元格") tableWidget.setItem(0, 0, newItem) ...

漫步量化 1万+
上一篇: PyQt(Python+Qt)学习随笔:QHeaderView.ResizeMode取值及含义
下一篇: PyQt学习随笔:QTableWidget项sizeHint的作用以及与QHeadView的sectionResizeMode、ResizeToContents的关系
LaoYuanPython
LaoYuanPython 2020年博客之星Top3 2020年博客之星Top3 领域专家: Python技术领域 领域专家: Python技术领域
博客等级 码龄8年 15万+粉丝 1324原创
评论 1
成就一亿技术人!
拼手气红包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、付费专栏及课程。

余额充值