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