Adr*_*enW 11 python user-interface qt pyqt pyside
我正在使用PySide开发一个计算机应用程序,我正在使用QTableWidget.假设我的表有3列,但它们包含的数据非常不同,例如(对于每一行)第一列中的长句,然后是最后两列中的3位数字.我想让我的表调整大小以便根据数据调整其大小,或者至少能够将列大小设置为(例如)可用空间的70/15/15%.
做这个的最好方式是什么 ?
我table.horizontalHeader().setResizeMode(QHeaderView.Stretch)
在阅读完这个问题之后尝试过,但它会生成相同大小的3列.
我还要table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
感谢Fabio的评论,但它没有根据需要填补所有可用空间.
无论是Interactive
,Fixed
,Stretch
,ResizeToContents
从QHeaderView文档似乎给我我需要什么(见第二编辑).
任何帮助将不胜感激,即使它是Qt/C++!非常感谢你.
编辑:我找到了一种解决方法,但它仍然不是我想要的:
header = table.horizontalHeader()
header.setResizeMode(QHeaderView.ResizeToContents)
header.setStretchLastSection(True)
Run Code Online (Sandbox Code Playgroud)
如果存在一种setStretchFirstSection
方法会更好,但不幸的是似乎没有一种方法.
编辑2:
表中唯一可以修改的是最后一列,用户可以在其中输入一个数字.红色箭头表示我想要的东西.
ekh*_*oro 31
这可以通过为每列设置调整大小模式来解决.第一部分必须拉伸以占用可用空间,而最后两部分只是调整其内容:
PyQt4中:
header = self.table.horizontalHeader()
header.setResizeMode(0, QtGui.QHeaderView.Stretch)
header.setResizeMode(1, QtGui.QHeaderView.ResizeToContents)
header.setResizeMode(2, QtGui.QHeaderView.ResizeToContents)
Run Code Online (Sandbox Code Playgroud)
PyQt5:
header = self.table.horizontalHeader()
header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
header.setSectionResizeMode(2, QtWidgets.QHeaderView.ResizeToContents)
Run Code Online (Sandbox Code Playgroud)
如前所述,您可以通过设置每列的调整大小模式来做到这一点。但是,如果您有很多列,这可能是很多代码。我这样做的方法是将“常规”调整大小模式设置为“ResizeToContent”,而不是将一个(或多个)列设置为“拉伸”!
这是代码:
PyQt4:
header = self.table.horizontalHeader()
header.setResizeMode(QtGui.QHeaderView.ResizeToContents)
header.setResizeMode(0, QtGui.QHeaderView.Stretch)
Run Code Online (Sandbox Code Playgroud)
PyQt5:
header = self.table.horizontalHeader()
header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)
header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
Run Code Online (Sandbox Code Playgroud)
小智 5
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)
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)