以下代码创建QTreeWidget
,其中包含7个(实际为8个)列。
我希望将最后一列#7用作间隔符。因此,当调整对话框大小时,列#6和TreeWidget的右边缘之间始终存在填充(距离)。 默认情况下,它的最后一列及其标题会不断调整为无穷大。相反,我希望最后一列及其标题保持其固定大小,而第6列将调整大小。最后一个列标题在QTreewidget的右边缘突然结束,看起来确实很难看。如果将最后一个标题/列保持为固定大小不是一个选项,我想知道是否有任何其他方法可以实现相同的目的:保持最后一列的标题从Tree List小部件的右边缘填充。
这是默认外观:
这里是我正在寻找的Photoshoped版本:
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])
class Tree(QtGui.QTreeWidget):
def __init__(self, *args, **kwargs):
super(Tree, self).__init__()
names=['Zero','One','Two','Three','Four','Five','Six','Seven']
self.setColumnCount(len(names))
self.setHeaderLabels(names)
item=QtGui.QTreeWidgetItem(names)
self.addTopLevelItem(item)
self.setColumnWidth(7, 32)
self.resize(720,120)
self.show()
tree=Tree()
sys.exit(app.exec_())
答案 0 :(得分:2)
好的,我有解决方案。首先,禁用拉伸最后一节,然后选择调整大小列。
myQTreeWidget = QtGui.QTreeWidget()
.
.
.
myQHeaderView = myQTreeWidget.header()
myQHeaderView.setStretchLastSection(False)
myQHeaderView.setResizeMode(6, QtGui.QHeaderView.Stretch)
QHeaderView.setResizeMode方法参考:http://pyqt.sourceforge.net/Docs/PyQt4/qheaderview.html#setResizeMode
QHeaderView.setResizeMode枚举参考:http://pyqt.sourceforge.net/Docs/PyQt4/qheaderview.html#ResizeMode-enum
实施您的代码;
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])
class Tree(QtGui.QTreeWidget):
def __init__(self, *args, **kwargs):
super(Tree, self).__init__()
names=['Zero','One','Two','Three','Four','Five','Six','Seven']
self.setColumnCount(len(names))
self.setHeaderLabels(names)
item=QtGui.QTreeWidgetItem(names)
self.addTopLevelItem(item)
self.header().setStretchLastSection(False)
self.header().setResizeMode(6, QtGui.QHeaderView.Stretch)
self.resize(720,120)
self.show()
tree=Tree()
sys.exit(app.exec_())
此致