2009-05-09 5 views
0

QTabWidgetを子タブに合わせて自動的にサイズ変更しようとしましたが、子タブが追加されてもそれを実行できませんでした。 Qt Designerを使用してフォームを作成し、以下のように単一の継承アプローチを使用して継承しました。子タブが追加されると、qtabwidgetインスタンスのサイズが自動的に変更されます。

class MyWidget : public QWidget 
{ 
    Q_OBJECT 

public: 
    MyWidget(QWidget *parent = 0); 
private: 
    Ui::MyForm ui; 
}; 

は私がQTabWidgetを持っていると私はaddTab()を使用して、私のQTabWidgetにオブジェクトのインスタンスを追加しています。 QTabWidgetを表示すると、MyWidgetインスタンスに合わせてサイズが変更されていないことがわかりました。 QTabWidgetインスタンスのサイズが自動的に変更されるようにするには、何が必要ですか?

答えて

0

ウィジェットを親ウィジェットに合わせるには、特定のレイアウト(グリッド、水平、垂直など)を使用する必要があります。

2

デザイナーでは、ウィジェットにレイアウトを追加してください。ウィジェットの背景をクリックすると、レイアウトを適用するときにウィジェット全体に適用されます。あなたのフォームが構築されているベース(親)ウィジェットは、フォーム内のアイテムだけでなく、レイアウトが必要であるというトリックです。

グリッドは一般的に使いやすいです。しかし、時には他のものが良いです。デザイナーは使用するのが難しく、慣れるまでに時間がかかります。基本的に、すべてのウィジェットにはレイアウトが適用されているはずです。あなたがしなければ奇妙な出来事が起こるかもしれません。

1

これはCreatorのバグです(少なくともV4.7.4 opensourceの場合)。 私の解決策は次のとおりです。

メインプロジェクトでQTabWidgetオブジェクトを作成しないでください。

(Qt->フォームクラスを作成することによって)個別に作成します。

次に、3つのファイル(.h、、cpp、.ui)をプロジェクトにコピーし、プロジェクトに追加します。

結果は次のとおりです。メインウィンドウのサイズ変更としてサイズ変更されます。

関連する問題