我正在用PySide开发一个计算机应用程序,我正在使用QTableWidget。假设我的表有3列,但是它们包含的数据非常不同,就像(每一行)第一列中的一个长句,然后是最后两列中的3位数字。我希望调整我的表的大小,以便将其大小调整为数据,或者至少能够使将列大小设置为(例如)可用空间的70/15/15 %。
做这件事最好的方法是什么?
我在阅读了table.horizontalHeader().setResizeMode(QHeaderView.Stretch)
之后尝试过这个问题,但它有3列大小相同。
我也尝试过table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
,多亏了法比奥的评论,但是它并没有按需要填充所有可用的空间。
Interactive
、Fixed
、Stretch
和QHeaderView文档的ResizeToContents
似乎都不能满足我的需要(参见第二版)。
任何帮助都将不胜感激,即使是Qt/C++!非常感谢。
编辑:,我找到了一种解决办法,但它仍然不是我想要的:
header = table.horizontalHeader()
header.setResizeMode(QHeaderView.ResizeToContents)
header.setStretchLastSection(True)
如果存在一个setStretchFirstSection
方法会更好,但不幸的是,似乎没有一个方法。
编辑2 :
表中唯一可以修改的是最后一列,用户可以在其中输入一个数字。红色箭头表示我想要什么。
下面是Stretch
发生的情况
下面是ResizeToContents
发生的情况
发布于 2016-06-30 09:33:39
这可以通过为每一列设置调整模式来解决。第一部分必须伸展以占用可用空间,而最后两个部分只需调整其内容的大小:
PyQt5:
header = self.table.horizontalHeader()
header.setSectionResizeMode(0, QHeaderView.Stretch)
header.setSectionResizeMode(1, QHeaderView.ResizeToContents)
header.setSectionResizeMode(2, QHeaderView.ResizeToContents)
PyQt5 6/PyQt5 5:
header = self.table.horizontalHeader()
header.setSectionResizeMode(0, QHeaderView.ResizeMode.Stretch)
header.setSectionResizeMode(1, QHeaderView.ResizeMode.ResizeToContents)
header.setSectionResizeMode(2, QHeaderView.ResizeMode.ResizeToContents)
PyQt4:
header = self.table.horizontalHeader()
header.setResizeMode(0, QHeaderView.Stretch)
header.setResizeMode(1, QHeaderView.ResizeToContents)
header.setResizeMode(2, QHeaderView.ResizeToContents)
发布于 2018-10-05 03:48:27
如前所述,您可以通过设置每个列的调整大小模式来实现这一点。但是,如果您有很多列,这可能是大量的代码。我的做法是将“通用”调整大小模式设置为"ResizeToContent“,而不是将一个(或多个)列设置为”拉伸“!
以下是代码:
PyQt4:
header = self.table.horizontalHeader()
header.setResizeMode(QtGui.QHeaderView.ResizeToContents)
header.setResizeMode(0, QtGui.QHeaderView.Stretch)
PyQt5:
header = self.table.horizontalHeader()
header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)
header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
发布于 2017-12-22 10:49:25
PyQt4
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
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)
https://stackoverflow.com/questions/38098763
复制