2011-03-19 12 views
1

QTreeViewの下部にあるアイテムを展開すると、ビューは自動的にスクロールして新しく展開されたアイテムを表示しません。私は、拡張を検出し、適切なときにスクロールを自分で実行することでこれを修正できます。QTreeViewの下部にスクロール可能な空白を追加するには

しかし、私は、ユーザーが現在許可されているよりも遠くに表示をスクロールできるようにしたいと考えています。現在、ツリーが大きすぎて可視領域に収まらない場合は、一番下の行が表示されるまで、ビューをスクロールできます。

私は、QTreeViewのサイズ計算を騙して行うべきだと考えていますが、ソースダイビング後でもQTreeViewとそのベースQAbstractScrollAreaとのやりとりが分かりません。

それ以外の場合は、ダミーの編集不可能な行をデータモデルに追加することができます。

答えて

2

ツリービューに余分な空白を追加するには、垂直スクロールバーmaximumの値を増やします。

max = self.treeview.verticalScrollBar().maximum() 
self.treeview.verticalScrollBar().setMaximum(max*2) 

希望これは、役立ちます。これはうまく機能

+2

に関しては、おかげでこのようななめらか。ビューは常に最大値を調整しているので、問題はそれを行うのに適した場所を見つけることです。私が今までに見つけた最高のものは、スクロールバーです。レンジチェンジ、無限再帰に対するガード付きです。 –

+0

あなたのモデルからアイテムを取り除くたびに、別の場所を更新するといいでしょう。 –

+0

私が言うことができる限り、そのアプローチは致命的です。 QTreeViewが信号の送信後にスクロールバーを更新するため、拡大/縮小されたスクロールバーの更新は機能しません。そのため、低レベルの「rangeChanged」をインターセプトする必要があります。 –

関連する問題