2011-11-14 13 views
2

なってからウィジェットの一部を防ぐために:内容によってのQt:どのように私は、以下のウィジェットのレイアウト持ってスクロールバー

+-----+--------------+ 
| A |    | 
+-----+  C  | 
| B |    | 
+-----+--------------+ 
|   D   | 
+--------------------+ 

:つまり

HBox 
- VBox 
    - HBox 
     widget "A" 
     widget "B" 
    - widget "C" 
- widget "D" 

を、私はこのような何かを持っています「A」および「B」は、スクロールバーを表示せずに必要な垂直スペースを拡大して消費する必要があります。 "D"は必要に応じて契約することができます。

「A」と「B」のsizePolicy()を「最小」に設定し、表示している内容に応じて「A」と「B」のsizeHint()を実装しようとしました。しかし、 "A"と "B"にはスクロールバーが表示され、 "D"には必要以上のスペースがあります。

sizePolicy()に対して "minimumExpanding"を試しましたが、スクロールバーが表示されたままです。

「A」と「B」のスペースが空いている場合、スクロールバーが表示されないように特権を得る方法を教えてください。

答えて

0

AとBのminimumHeightminimumWidthのプロパティを、スクロールバーがない場合の最小値に設定できます。彼らはまだ拡大することができますが、そのサイズより小さくならないでしょう。

[編集:] あなたの質問を読んだ後で、あなたのAとBの内容が必ずしも同じサイズになるとは限りません。明らかに上記のアプローチは、コンテンツのサイズが変わるたびにそのサイズを知っている場合にのみ可能です。この場合は、setMinimumHeight()/setMinimumWidth()またはsetMinimumSize()をコードから呼び出すことができます。

+0

私は私が必要とされるどのくらいの高さを把握した後、最小の高さとして設定し、すなわち、あなたが示唆したほぼ正確に何をしようとしました。しかし、それは動作していないようです。最小限の例を入れてここに投稿できるかどうかを試してみます。 –

+0

私は最小限の例をまとめようとしていたときに問題を明らかにしました。それ自身がminimumHeightを設定していたウィジェット( "D"の深い部分)があることが判明しました。 –

1

ABのサイズポリシーにはExpandingを使用してください。ウィジェット 'D'では、Aおよび/またはBの内容が変更されるたびにサイズを変更する必要があります。サイズポリシーは最小限にする必要があります。setMinimumHeightを使用する必要があります。

ウィジェットにスクロールバーがある場合は、QAbstractScrollAreaから継承する必要があります。あなたはスクロールバーを無効にするためにsetHorizontalScrollBarPolicysetVerticalScrollBarPolicyを使用することができます。

A->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); 
B->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); 
+0

"A"や "B"のサイズが変わったときに、 "D"のサイズを設定しなければならないとうんざりします。これは、 "A"と "D"との間の不要な依存性を導入する。後で「D」から他のウィジェットに変更する場合は、コードを変更する必要があります。私はそれを撃つだろう。 A/Bにサイズポリシーを設定するだけでもいいですね。 –

関連する問題