首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PySide - PyQt :如何将QTableWidget列宽度设置为可用空间的比例?

PySide - PyQt :如何将QTableWidget列宽度设置为可用空间的比例?
EN

Stack Overflow用户
提问于 2016-06-29 11:53:39
回答 8查看 97.8K关注 0票数 40

我正在用PySide开发一个计算机应用程序,我正在使用QTableWidget。假设我的表有3列,但是它们包含的数据非常不同,就像(每一行)第一列中的一个长句,然后是最后两列中的3位数字。我希望调整我的表的大小,以便将其大小调整为数据,或者至少能够使将列大小设置为(例如)可用空间的70/15/15 %。

做这件事最好的方法是什么?

我在阅读了table.horizontalHeader().setResizeMode(QHeaderView.Stretch)之后尝试过这个问题,但它有3列大小相同。

我也尝试过table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents),多亏了法比奥评论,但是它并没有按需要填充所有可用的空间。

InteractiveFixedStretchQHeaderView文档ResizeToContents似乎都不能满足我的需要(参见第二版)。

任何帮助都将不胜感激,即使是Qt/C++!非常感谢。

编辑:,我找到了一种解决办法,但它仍然不是我想要的:

代码语言:javascript
运行
复制
header = table.horizontalHeader()
header.setResizeMode(QHeaderView.ResizeToContents)
header.setStretchLastSection(True)

如果存在一个setStretchFirstSection方法会更好,但不幸的是,似乎没有一个方法。

编辑2 :

表中唯一可以修改的是最后一列,用户可以在其中输入一个数字。红色箭头表示我想要什么。

下面是Stretch发生的情况

下面是ResizeToContents发生的情况

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2016-06-30 17:33:39

这可以通过为每一列设置调整模式来解决。第一部分必须伸展以占用可用空间,而最后两个部分只需调整其内容的大小:

PyQt5:

代码语言:javascript
运行
复制
header = self.table.horizontalHeader()       
header.setSectionResizeMode(0, QHeaderView.Stretch)
header.setSectionResizeMode(1, QHeaderView.ResizeToContents)
header.setSectionResizeMode(2, QHeaderView.ResizeToContents)

PyQt5 6/PyQt5 5:

代码语言:javascript
运行
复制
header = self.table.horizontalHeader()       
header.setSectionResizeMode(0, QHeaderView.ResizeMode.Stretch)
header.setSectionResizeMode(1, QHeaderView.ResizeMode.ResizeToContents)
header.setSectionResizeMode(2, QHeaderView.ResizeMode.ResizeToContents)

PyQt4:

代码语言:javascript
运行
复制
header = self.table.horizontalHeader()
header.setResizeMode(0, QHeaderView.Stretch)
header.setResizeMode(1, QHeaderView.ResizeToContents)
header.setResizeMode(2, QHeaderView.ResizeToContents)
票数 93
EN

Stack Overflow用户

发布于 2018-10-05 11:48:27

如前所述,您可以通过设置每个列的调整大小模式来实现这一点。但是,如果您有很多列,这可能是大量的代码。我的做法是将“通用”调整大小模式设置为"ResizeToContent“,而不是将一个(或多个)列设置为”拉伸“!

以下是代码:

PyQt4:

代码语言:javascript
运行
复制
header = self.table.horizontalHeader()
header.setResizeMode(QtGui.QHeaderView.ResizeToContents)
header.setResizeMode(0, QtGui.QHeaderView.Stretch)

PyQt5:

代码语言:javascript
运行
复制
header = self.table.horizontalHeader()
header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)       
header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
票数 11
EN

Stack Overflow用户

发布于 2017-12-22 18:49:25

PyQt4

代码语言:javascript
运行
复制
header = self.table.horizontalHeader()
header.setResizeMode(0, QtGui.QHeaderView.Stretch)
header.setResizeMode(1, QtGui.QHeaderView.ResizeToContents)
header.setResizeMode(2, QtGui.QHeaderView.ResizeToContents)
header.setResizeMode(3, QtGui.QHeaderView.Stretch)

PyQt5

代码语言:javascript
运行
复制
header = self.table.horizontalHeader()       
header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
header.setSectionResizeMode(2, QtWidgets.QHeaderView.ResizeToContents)
header.setSectionResizeMode(3, QtWidgets.QHeaderView.Stretch)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38098763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档