PyQt:如何为单个表头设置不同的大小?
我有一个列表,这个列表里面包含了很多小列表,每个小列表里有两个东西,一个是单词,一个是数字。这个列表会用一个表格控件来展示。
我的目标是做一个有两列的表格,行数根据需要来定。但是,包含单词的那一列的标题要比包含数字的那一列的标题大一些。
我可以用“根据内容调整列宽”的方法,但我希望调整后,表格周围没有多余的空白区域。
我在用QtDesigner来创建这个界面的代码。谢谢。
2 个回答
8
对于这个问题,最好的解决办法是在 Qt5
中使用 setSectionResizeMode
,而不是 setResizeMode
:
tabv = QTableView()
tabv.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
或者
tabv.horizontalHeader().setSectionResizeMode(1)
20
有几个方法可以用来处理QHeaderView
类,可能正好符合你的需求。最简单的方法是:
table.horizontalHeader().setStretchLastSection(True)
这个方法会确保表格的最后一列会自动调整大小,以适应表格中可用的空间,而其他列的宽度保持不变(用户仍然可以调整这些列的宽度)。
另外,还有一些方法可以设置列的ResizeMode
。
对于Qt5:
table.setColumnWidth(1, 80)
table.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch)
对于Qt4:
table.setColumnWidth(1, 80)
table.horizontalHeader().setResizeMode(0, QHeaderView.Stretch)
这个方法会固定第二列的宽度,并确保第一列会自动调整大小,以填满剩余的空间(但不允许用户再调整其他列的宽度)。