Qtウィジェットをウィンドウサイズとともに拡大する方法は?


88

QFormLayout親ウィジェットを埋めるように成長する小さなものが欲しいです。

Qt Designerのテンプレートを使用して新しい.uiファイルを作成しましたQWidget。私はQFormLayoutその「ウィンドウ」の中に入れて、その中にいくつかのコントロールを入れましたQFormLayout

これはすべて適切に機能しますが、QFormLayout常にQt Designerで設定したサイズのままです。QFormLayoutその親ウィジェットを埋めて、それで成長/縮小したいと思います。

どうすればそれを達成できますか?

回答:


129

Designerで、centralWidgetをアクティブにして、レイアウト(水平または垂直レイアウトなど)を割り当てます。次に、QFormLayoutは自動的にサイズ変更します。

デザイナーの画像

すべてのウィジェットにレイアウトがあることを常に確認してください!そうしないと、自動サイズ変更はそのウィジェットで壊れます!

こちらもご覧ください

QtDesignerでは、コントロールが大きすぎることを要求し、サイズが変更されません


13
QtDesignerは、少し混乱することがあります。
バスティーブ'19年

29
ああ、ありがとう!:-)私はQtDesigner(まあ、QtCreator、同じことですが)を30分じっと見つめていて、中央のウィジェットが最大にサイズ変更されない理由を理解できませんでした。回答に丸で囲まれている場合、赤い「無効」マークがその上にあります。作成者ツールバーの「垂直にレイアウト」ボタンを1回クリックすると、問題が修正されます。ツールバーBTWは見過ごされやすいことに初めて気づきました...
ssc

7
Jensの回答にコメントするには:Macで最上位のウィジェット(必ずしも「centralWidget」という名前ではない)をクリックし、メニューバーの[フォーム]をクリックして、レイアウトの1つを選択します。
hnasarat-2012

2
まだ疑問がある場合は、QT5.8 / QT Creator 4.2.1のWindowsで、トップレベルの「centralWidget」(小さな赤いマークが付いている)をクリックして、[ツール]> [フォームエディター]> [レイアウト]に移動します。垂直(または水平)。
LeoR 2017

41

その下に少なくとも1つの子を追加するまで、centralwidgetにレイアウトを割り当てることが不可能であることがわかりました。次に、赤い「無効」マークが付いた小さなアイコンを強調表示して、上部のデザイナーツールバーのレイアウトをクリックします。


4
これは厄介です。中央のウィジェットにレイアウトを割り当てるとすべきである Qtの創造主で最も些細な操作です。代わりに、そうするためには、この非常に直感的でないソリューションをJens同様に直感的でないソリューションとその正確な順序で)組み合わせる必要があります。Qt Creatorが提供する自動化によって、繰り返しボイラープレートが大幅に打ち負かされていますが、その恐ろしいユーザーエクスペリエンス(UX)をハッキングすることで、私は新しい目を見張ることができました。
セシルカレー

@Cecil Curryそのソリューションの後でも、私が何をすべきかを理解するのに20分かかりました... centralWidgetは、レイアウトを追加するためのコンテキストメニューオプションがない場合の場合のみです...ツールバーの微視的なボタンだけが非アクティブなもののように見えます
スウィフト-金曜日のパイ

3
ここでの解決策の後でさえ、このコメントを書いて、私はオプションを見つけるのに苦労しました。centralWidgetを選択し、アプリの空きスペースを右クリックして、開いたコンテキストメニューの[レイアウト]に移動し、目的のレイアウトを選択します。これは少なくとも私にとってはうまくいきました(QT5、QT Designer 5.11.1を使用)。
kushy

10

受け入れられた答え(その画像)は間違っています。少なくとも今はQT5にあります。代わりに、ルートオブジェクト/ウィジェットにレイアウトを割り当てる必要があります(前述の画像を指すので、のMainWindow代わりになるはずですcentralWidget)。またQObject、これを機能させるには、その下に少なくとも1つ作成する必要があることに注意してください。これを行うと、UIがウィンドウのサイズ変更に応答するようになります。


0

トップレベルのQWidgetオブジェクトのデフォルトのレイアウトタイプを、ブレークレイアウトタイプから他のレイアウトタイプ(垂直レイアウト、水平レイアウト、グリッドレイアウト、フォームレイアウト)に変更する必要があります。例えば: ここに画像の説明を入力してください

このようなものに:

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.