如何将最后一个列标题设置为固定大小并进行维护

时间:2014-08-06 17:50:44

标签: python pyqt

以下代码创建QTreeWidget,其中包含7个(实际为8个)列。

我希望将最后一列#7用作间隔符。因此,当调整对话框大小时,列#6和TreeWidget的右边缘之间始终存在填充(距离)。 默认情况下,它的最后一列及其标题会不断调整为无穷大。相反,我希望最后一列及其标题保持其固定大小,而第6列将调整大小。最后一个列标题在QTreewidget的右边缘突然结束,看起来确实很难看。如果将最后一个标题/列保持为固定大小不是一个选项,我想知道是否有任何其他方法可以实现相同的目的:保持最后一列的标题从Tree List小部件的右边缘填充。

这是默认外观:

enter image description here

这里是我正在寻找的Photoshoped版本:

enter image description here

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_())

1 个答案:

答案 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_())

此致