2011-01-18 18 views
2

Qtreewidget内のアイテムのアイコンサイズはどのように設定されますか?これまでのところ私はQTreeWidgetでアイコンサイズを設定する方法は?

QTreeWidget.setIconSize(QSize(32,32))

を試してみました。しかしないことすべては、幅、高さではないの増加です。

しかし、

print QTreeWidget.iconSize()

は正しい結果を示しています。 PyQt4.QtCore.QSize(32, 32)

を誰もがQTreewidgetがどのように動作するかの理解を持っていますか?

答えて

4

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) 

ない理想的な、それはすべての行のサイズを変更して。

[編集]あなたは、インデックスを使用して周り== Falseを次に

混乱をQTreeWidget/View.uniformRowHeightsを確保行のサイズを変更したい場合。私にとっては、2列目が残りの部分より大きくなるようにしたいと思っていました。私は良い方法があると確信していますが、私のサイズヒントは次のようになりました:

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

+0

これは非常に役に立ちます!ありがとう。奇妙なことに私はそのdelegate sizeHintをどのように通知できますか? QTreeWidgetItem内のボタンをクリックしてウィジェットの高さ/サイズを更新したい場合は、ここをクリックしてください。どうすればリンクできますか? – Dariusz

0

大きなアイコンに対応するためにQTreeViewの行の高さを調整する必要があるように見えます。私が写真で見ることができるように、アイコンのサイズが適切に変更されているように見えますが、行の高さが十分でなくアイコンが切り取られているためです。行の高さを変更する方法については、thisを参照してください。

+0

乾杯、で行う必要があります。完全には完璧ではありません。私は第2レベル(アルバムレベル)を大きくする必要があります。これまで私はすべての行を大きくするようにしましたが、私はそれを並べ替えることができるかもしれないいくつかの余分な研究/実験を考えています。 – regomodo

+0

アイテムデリゲートのsizeHint()関数をオーバーライドする必要があります。 'sizeHint()'関数に渡された 'QModelIndex'からツリー内のどこにいるのかを知ることができ、第2レベルであれば大きなサイズを返します。 'index.parent()'が空の 'QModelIndex()'を返すかどうかをテストすることで、2番目のレベルでテストできます。 –

+0

返されるQModelIndexを使用しようとしましたが、インデックスは常に同じです。 print index.parent()。data()。toString()は常に同じことを示します。何もない。しかし、これについてはすべて間違っている可能性があります。 QTreeWidgetItem.setSizeHint(self、int column、QSize size) – regomodo

関連する問題