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如何设置表头最小宽度,却搜索到很多设置列宽的几种方式,经过测试,我竟然得出这样一个结论,在设置特定列属性的时候,如果你对某一列设置了属性一和属性二,那么属性二会把属性一覆盖掉,该列只有属性二,并不会有属性一。这一个发现把心态搞炸了。不禁想到了一句话,如果这个成立了,别人是如何做到相对好的显示效果的。如果不成立我的测试结果命名就是这样的。那时候想说脏话啊有木有。
第二天,我就想另一个问题,如果不钻这个牛角尖,我设置全表的最小宽度,会不会和某一列的有冲突,测试一下,竟然没有冲突,虽然有些列可能比预想的要宽一丢丢,但是总体上来讲,显示效果好了不少。也就是开头的三条代码。
问题,发现比没有发现号
问题,特别是自己发现的问题,既然能发现,那就说明不是什么大问题,你要相信一点,你能发现的问题,一般都是你能解决的问题
问题,发现了解决不了,不可能,要么就是你不想解决他,要么就是你在绕弯儿
多看书多看报,问题来了你知道~_~

目录
相关文章
|
7月前
使用SDAutoLayout实现控件根据内容进行宽度自适应和高度自适应
使用SDAutoLayout实现控件根据内容进行宽度自适应和高度自适应
113 2
|
7月前
表格宽度和高度
表格宽度和高度。
43 1
table怎么实现部分列固定宽度,其它列宽自适应拉伸
table怎么实现部分列固定宽度,其它列宽自适应拉伸
509 0
table怎么实现部分列固定宽度,其它列宽自适应拉伸
|
C#
C#-改变表格行颜色
C#改变表格行颜色
311 0
表格边框设置
其中,rules去表格内行和列的表格线,frame去表格边框。rules=rows去行.rules=cols去列frame=vsides 只显示左右frame=hsides 只显示上下frame=above 只显示上方
684 0
如何让QComboBox控件下拉框自适应文字宽度?
如何让QComboBox控件下拉框自适应文字宽度?
1154 0
|
测试技术 C#
WPF 设置控件阴影后,引发的Y轴位置变化问题
原文:WPF 设置控件阴影后,引发的Y轴位置变化问题 背景 最近遇到一个动画执行时,文本位置变化的问题。如下图: 如果你仔细看的话,当星星变小时,文本往下降了几个像素。 貌似有点莫名其妙,因为控件之间并不在同一个Panel布局控件中,不存在高度限制变化引发此类问题。
1056 0
自定义的 ListBoxItem 自适应ListBox的宽度
原文:自定义的 ListBoxItem 自适应ListBox的宽度    主要是要设置HorizontalContentAlignment的值,而不是HorizontalAlignment 1 2 3 4 5 6 ...
944 0