2017-03-19 2 views
0

私はQt 5.8を使用しています。私はいくつかの他のQWidgetsで構成されている私のカスタムQFrame(MyQFrameと呼ぶ)を持っていて、私のカスタムMyQFrameの他のインスタンスを含むことができます。 MyQFrameの最小サイズを設定しました。 MyQFrameはレイアウトとしてQGridLayoutを使用します。QScrollArea with custom QFrame

このMyQFrameは、QTabWidgetのQScrollAreaの内部に配置されています。 QScrollAreaはサイズ変更可能に設定されています(setWidgetResizable(true))。 MyQFrameではサイズポリシーを拡張(setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);)に設定しようとしましたが、効果がありませんでした。

これは私がQTabWidgetとQScrollAreaを作成する方法(抽象)である:

QTabWidget* tabWidget = new QTabWidget(); 
QScrollArea* firstTab = new QScrollArea(); 
firstTab->setWidgetResizable(true); 
tabWidget->addTab(firstTab, "first tab"); 
MyQFrame* myFrame1 = new MyQFrame(); 
firstTab->setWidget(myFrame1); 
// ... adding other MyQFrames inside this one using methods in MyQFrame ... 

私が働いてスクロール領域を取得することはできません。ネストされたMyQFramesの親を拡張し、スクロールバーを追加するのではなく、最後の子が他のMyQFramesと重なり合うことになります。 MyQFramesにはsetWidgetResizableのようなものがありませんが、このメソッドはQScrollAreaにしかありません。私は今何を試してみるべきか分かりません。私はまだかなり新しいです。

以下の画像より明確になるはずです。

overlaping

+0

MyQFrame(3000x3000)で最小のサイズに設定してから、スクロールバーが表示されました。しかし、MyQFramesはかなり重なっていました。 – Pyro

答えて

0

私はMyQFrameにQGridLayoutを使用し、言ったように。私はこのレイアウトのサイズ制約をこのような最小サイズに設定しなければならなかった:layout->setSizeConstraint(QLayout::SetMinimumSize);。今、私が望んでいた方法で働いています。

関連する問題