如何在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

+0

干杯,真正帮助完成。虽然不完全完美;我只需要第二级(专辑级)就可以做得更大。到目前为止,我认为每一行都会更大一些,但我认为我可以对此进行一些额外的研究/实验。 – regomodo 2011-01-19 19:17:34

+0

您必须重写您的物品委托的sizeHint()函数。你可以通过传递给sizeHint()函数的`QModelIndex`来判断你在树中的位置,如果在第二级则返回更大的尺寸。你可以通过测试`index.parent()`是否返回一个空的`QModelIndex()`来测试你的第二级。 – 2011-01-19 19:29:45