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

reg*_*odo 2 python qt pyqt

如何设置 Qtreewidget 中项目的图标大小?到目前为止我已经尝试过

QTreeWidget.setIconSize(QSize(32,32))

但所做的只是增加宽度,而不是高度。

然而,一个

print QTreeWidget.iconSize()

显示正确的结果: PyQt4.QtCore.QSize(32, 32)

有没有人对 QTreewidget 的工作原理有更好的了解?

reg*_*odo 5

杰森有一些解决方案。树视图行的高度也需要调整大小:

class MyDelegate(QItemDelegate):      
    def __init__(self):    
        QItemDelegate.__init__(self)  

    def sizeHint(self, option, index):  
        return QSize(32,32)
Run Code Online (Sandbox Code Playgroud)

然后,在其他地方:

delegate = MyDelegate()   
tree = QTreeWidget()
tree.setItemDelegate(delegate)
Run Code Online (Sandbox Code Playgroud)

不理想,因为它会调整每一行的大小。

[编辑] 如果你想改变行的大小,确保 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)
Run Code Online (Sandbox Code Playgroud)

然而,这还有另一个问题。图标不可调整大小。啊! 必须这样做

QTreeWidget.setIconSize(QSize(width,height))