如何在QTreeWidget中设置图标大小?
问题描述:
如何设置Qtreewidget中项目的图标大小?到目前为止,我已经尝试如何在QTreeWidget中设置图标大小?
QTreeWidget.setIconSize(QSize(32,32))
但这一切确实是增加宽度,没有高度。
然而,
print QTreeWidget.iconSize()
显示正确结果: PyQt4.QtCore.QSize(32, 32)
有没有人有更好的理解QTreewidget是如何工作的?
答
杰森有一些解决方案。需要TreeView的行的高度将进行尺寸调整,以及:
class MyDelegate(QItemDelegate):
def __init__(self):
QItemDelegate.__init__(self)
def sizeHint(self, option, index):
return QSize(32,32)
然后,在别处:
delegate = MyDelegate()
tree = QTreeWidget()
tree.setItemDelegate(delegate)
并不理想,因为它会调整每一行。
[编辑]如果你想改变行的大小确保QTreeWidget/View.uniformRowHeights ==假
然后勾搭使用索引。对我而言,我希望第二排比其他排更大。我确信有更好的方法,但我的尺寸提示成为:
def sizeHint(self,option,index):
parent = index.parent()
if parent.isValid() and not parent.parent().isValid():
return QSize(32,32)
return QSize(24,24)
但是,还有另一个问题。图标不可调整大小。啊!这必须与
QTreeWidget.setIconSize(QSize(width,height))
答
在我看来,你需要调整QTreeView的行高来适应更大的图标。从我在图片中可以看到的情况来看,它看起来像图标正在被正确调整大小,但是因为行数不够高而且图标正在被裁剪。有关如何更改行高的信息,请参见this。
干杯,真正帮助完成。虽然不完全完美;我只需要第二级(专辑级)就可以做得更大。到目前为止,我认为每一行都会更大一些,但我认为我可以对此进行一些额外的研究/实验。 – regomodo 2011-01-19 19:17:34
您必须重写您的物品委托的sizeHint()函数。你可以通过传递给sizeHint()函数的`QModelIndex`来判断你在树中的位置,如果在第二级则返回更大的尺寸。你可以通过测试`index.parent()`是否返回一个空的`QModelIndex()`来测试你的第二级。 – 2011-01-19 19:29:45