2013-02-24 22 views
5

QTreeViewの内容を自動的にサイズ変更しようとしています。これは私の設定です:QWidgetQt.Tool | Qt.FramelessWindowHintWindowFlagsという「スマートな」ツールチップを作成しようとしています。これはうまく動作します。いくつかのボタン(サイズは一定)とQTreeViewのレイアウトが含まれています。現在、QTreeViewのモデルに行が追加されるたびに、QTreeViewは、垂直スクロールバーを避けるために自動的にサイズを増やす必要があります。QTreeViewを自動的に内容に合わせてサイズを変更する

ツールチップウィジェットとQTreeViewの両方でQSizePolicy.Expandingを設定しても何も変更されませんでした。多少の追加のフラグなどがありません。常にではないが、ほとんどの時間の作品

class ToolTip: 
    def __init__(self): 
     ... 
     self.itemView.setVerticalScrollMode(QAbstractItemView.ScrollPerPixel) 
     self.itemView.verticalScrollBar().rangeChanged.connect(self.resizeViewVertically) 

    def resizeViewVertically(self, min, max): 
     self.resize(self.width(), self.height() + max) 

は、私はまた、以下の、ブルートフォース方法を試してみました。毎回(正確には2回目ですが、それが偶然かどうか分かりません)、このコードを使用すると、ビューは正しくサイズ変更されます(つまり、すべてのコンテンツが収まるので、スクロールバー)、スクロールバーが消えず、最後の行の下にある空のスペースにスクロールすることができます。

答えて

0

あなたはこの項目がどのように動作するかを参照することもできます。 http://ftp.ics.uci.edu/pub/centos0/ics-custom-build/BUILD/PyQt-x11-gpl-4.7.2/examples/layouts/flowlayout.py

はあなたが必要なものへとあなたにいくつかのヒントを与える可能性があります。そのレイアウトをスクロールウインドウにドロップして、メインウィンドウがラスタライズされたら、内部のすべてのウィジェットを

に並べ替えます
関連する問題