【发布时间】:2016-11-01 02:41:39
【问题描述】:
我正在使用 PySide 开发一个计算机应用程序,并且我正在使用 QTableWidget。假设我的表有 3 列,但它们包含的数据非常不同,例如(对于每一行)第一列中的长句,最后两列中的 3 位数字。我希望调整表格大小以根据数据调整其大小,或者至少能够将列大小设置为(例如)70/15/15 %的可用空间。
最好的方法是什么?
我在阅读this question 后尝试了table.horizontalHeader().setResizeMode(QHeaderView.Stretch),但它会产生相同大小的 3 列。
感谢Fabio 的comment,我也尝试了table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents),但它并没有根据需要填满所有可用空间。
QHeaderView documentation 中的Interactive、Fixed、Stretch、ResizeToContents 似乎都不能满足我的需求(参见第二次编辑)。
任何帮助都将不胜感激,即使它是针对 Qt/C++ 的!非常感谢。
编辑:我找到了一种解决方法,但它仍然不是我想要的:
header = table.horizontalHeader()
header.setResizeMode(QHeaderView.ResizeToContents)
header.setStretchLastSection(True)
如果有setStretchFirstSection方法就更好了,可惜好像没有。
编辑 2:
表格中唯一可以修改的是最后一列,用户可以在其中输入一个数字。红色箭头表示我想要的。
【问题讨论】:
-
尝试 QHeaderView.ResizeToContents 而不是 QHeaderView.Stretch
-
这行得通,但这不是我想要的,因为
ResizeToContents,因为我的列不够大,它们没有填满可用的空间。我将进行编辑,使其变得更加清晰。 -
对于您的第二次编辑,我认为正确的做法是根据您的粗略估计将列设置为默认宽度,然后由于可以拉伸,用户可以稍后根据需要对其进行修改。
标签: python qt user-interface pyqt pyside