如何在QTreeWidget中设置图标大小?

2 投票
2 回答
9898 浏览
提问于 2025-04-16 10:12

如何设置QTreeWidget中项目的图标大小呢?到目前为止,我尝试过

QTreeWidget.setIconSize(QSize(32,32))

但这样做只会增加宽度,而不会增加高度。

不过,使用

print QTreeWidget.iconSize()

可以显示正确的结果:

PyQt4.QtCore.QSize(32, 32)

有没有人对QTreeWidget的工作原理有更好的理解呢?

2 个回答

1

看起来你需要调整QTreeView的行高,以便能容纳更大的图标。从图片上看,图标的大小调整得还不错,但因为行高不够,导致图标被裁剪了。你可以查看这个链接,了解如何改变行高。

7

Jason有一些解决方案。树形视图中每一行的高度也需要调整:

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设置为False。

然后可以通过索引来调整。对我来说,我想让第二行比其他行大。我相信还有更好的方法,但我的sizeHint变成了:

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

撰写回答