如何设置最后一列标题为固定大小并保持不变
下面的代码创建了一个 QTreeWidget
,它有7(实际上是8)列。
我想把最后一列,也就是第7列,作为一个间隔使用。这样当对话框调整大小时,第6列和树形控件的右边缘之间总会保持一定的距离。默认情况下,最后一列及其标题会无限制地调整大小。相反,我希望最后一列及其标题保持固定大小,而第6列可以调整大小。最后一列的标题直接到达QTreeWidget的右边缘看起来很不好。如果保持最后一列的标题/列为固定大小不可行,我想知道有没有其他方法可以实现同样的效果:让最后一列及其标题与树形列表控件的右边缘保持一定的间隔。
这是默认的样子:
这是我想要的Photoshop版本:
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 个回答
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_())
祝好,