PyQt:如何为单个表头设置不同的大小?

10 投票
2 回答
19916 浏览
提问于 2025-04-17 08:40

我有一个列表,这个列表里面包含了很多小列表,每个小列表里有两个东西,一个是单词,一个是数字。这个列表会用一个表格控件来展示。

我的目标是做一个有两列的表格,行数根据需要来定。但是,包含单词的那一列的标题要比包含数字的那一列的标题大一些。

我可以用“根据内容调整列宽”的方法,但我希望调整后,表格周围没有多余的空白区域。

我在用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)

这个方法会固定第二列的宽度,并确保第一列会自动调整大小,以填满剩余的空间(但不允许用户再调整其他列的宽度)。

撰写回答