QTableWidget设置列自适应宽度,有最小宽度限制且可以自由拖动改变表头宽度

简介: 小问题踩大坑

解决方案很简单:
明确设置属性的地方,设置如下三条属性:
1> QtableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
2> QtableWidget.horizontalHeader().setMinimumSectionSize(100)
3> QtableWidget.horizontalHeader().setSectionResizeMode(0, QheaderView.Interactive)
解释:

1>  该条设置列自适应宽度
2>  该条设置列最小宽度,防止拉伸改变表头宽度的时候,宽度小于最小宽度,以至于表头文字内容消失,显示异常
3>  该条设置第一列可以自由拉伸,此时拉伸的前提有1和2,即没有特殊要求的情况下,全部列自适应宽度
  

最近做一个PyQt的项目,发现很多问题,其中有些问题不解决是真难受,我发现项目中的表格,可以自由拖动表头以改变表格列的宽度,但是存在一个bug,那就是你可能拖着拖着某一列的表头标识,就被隐藏了。问题不大,首先确认一点,表头标识被隐藏,但是表格行依然在,也就是表头依然存在。要解决这个问题,最简单的解决犯法就是设置表格的最小宽度。可是这个简单的问题却浪费了我一天多的时间。
首先,我很明白一点,这个问题不大,很简单,没有什么难度。
但是随着时间过去几个小时之后,我心态炸了。因为我不知道怎么解决,这种bug肯定是设置某个属性就行了,但是在什么位置设置?设置什么属性?怎么设置?这些我都不知道。
有问题,问度娘呀。
然后我就搜索QtableWidget如何设置表头最小宽度,却搜索到很多设置列宽的几种方式,经过测试,我竟然得出这样一个结论,在设置特定列属性的时候,如果你对某一列设置了属性一和属性二,那么属性二会把属性一覆盖掉,该列只有属性二,并不会有属性一。这一个发现把心态搞炸了。不禁想到了一句话,如果这个成立了,别人是如何做到相对好的显示效果的。如果不成立我的测试结果命名就是这样的。那时候想说脏话啊有木有。
第二天,我就想另一个问题,如果不钻这个牛角尖,我设置全表的最小宽度,会不会和某一列的有冲突,测试一下,竟然没有冲突,虽然有些列可能比预想的要宽一丢丢,但是总体上来讲,显示效果好了不少。也就是开头的三条代码。
问题,发现比没有发现号
问题,特别是自己发现的问题,既然能发现,那就说明不是什么大问题,你要相信一点,你能发现的问题,一般都是你能解决的问题
问题,发现了解决不了,不可能,要么就是你不想解决他,要么就是你在绕弯儿
多看书多看报,问题来了你知道~_~

目录
相关文章
|
5月前
|
JavaScript
ELEMENT-PLUES如何设计二级高亮样式,文字如何呈现高亮效果,如果字体出现不对齐的情况,侧边栏icon如何调位置,目录如何折叠,如何延迟动画播放,如何添加阴影,如何添加logo,在行内样式写宽
ELEMENT-PLUES如何设计二级高亮样式,文字如何呈现高亮效果,如果字体出现不对齐的情况,侧边栏icon如何调位置,目录如何折叠,如何延迟动画播放,如何添加阴影,如何添加logo,在行内样式写宽
|
7月前
使用SDAutoLayout实现控件根据内容进行宽度自适应和高度自适应
使用SDAutoLayout实现控件根据内容进行宽度自适应和高度自适应
126 2
|
7月前
表格宽度和高度
表格宽度和高度。
48 1
|
7月前
echars 设置文字倾斜 图表根据鼠标滑轮自动改变x轴数据
echars 设置文字倾斜 图表根据鼠标滑轮自动改变x轴数据
106 1
|
C#
C#-改变表格行颜色
C#改变表格行颜色
314 0
布局之悬浮显示更多文本并增加箭头指示效果
布局之悬浮显示更多文本并增加箭头指示效果
135 0
布局之悬浮显示更多文本并增加箭头指示效果
改变DBGRID的选中行的颜色
默认DBGRID选中行的颜色为深蓝色,可以在程序中改变 在DBGRID的OnDrawColumnCell中写入 if (State=[gdSelectd..gdFocused,gdCurrent]) then begin    Grid.
888 0
PyQt5 技术篇-设置滚动条拉动位置,scrollArea滚动条位置设置方法。
PyQt5 技术篇-设置滚动条拉动位置,scrollArea滚动条位置设置方法。
632 0
|
测试技术 C#
WPF 设置控件阴影后,引发的Y轴位置变化问题
原文:WPF 设置控件阴影后,引发的Y轴位置变化问题 背景 最近遇到一个动画执行时,文本位置变化的问题。如下图: 如果你仔细看的话,当星星变小时,文本往下降了几个像素。 貌似有点莫名其妙,因为控件之间并不在同一个Panel布局控件中,不存在高度限制变化引发此类问题。
1059 0