このページでは

レイアウトの使用Qt Widgets Designer

フォームを使用する前に、フォーム上のオブジェクトをレイアウトに配置する必要があります。これにより、フォームをプレビューしたり、アプリケーションで使用したりした際に、オブジェクトが正しく表示されるようになります。また、オブジェクトをレイアウトに配置することで、フォームのサイズ変更時にオブジェクトのサイズも正しく調整されるようになります。

ウィジェットがレイアウトに挿入されると、レイアウト自体がスペーサーによって指定されたヒントを考慮して各ウィジェットの配置を制御するため、個々のウィジェットを個別に移動したりサイズを変更したりすることはできません。ウィジェットの配置に影響を与えるために、レイアウトにスペーサーを追加することができます。

レイアウトはネストして階層構造を形成することができます。たとえば、ボタンが横一列に並んだ典型的なダイアログレイアウトを実現するには、ダイアログ要素を垂直ボックスレイアウトで配置し、その下部にボタンを含む水平ボックスレイアウトを配置します。Qtのレイアウトシステムの概要については、「レイアウト管理」を参照してください。

レイアウトを解除するには、Ctrl+0 を押すか、フォームのコンテキストメニュー、[Form] メニュー、またはメインツールバーから[Break Layout]を選択します。

トップレベルレイアウトの設定

フォームのトップレベルレイアウトを設定するには、選択状態を解除し(フォーム自体をマウスの左ボタンでクリック)、レイアウトを適用します。 トップレベルレイアウトは、ウィンドウのサイズ変更時にウィジェットのサイズが正しく変更されるようにするために必要です。トップレベルレイアウトが設定されているかどうかを確認するには、ウィジェットをプレビューし、サイズグリップをドラッグしてウィンドウのサイズを変更してみてください。

レイアウトの種類を変更するためのボタンが表示されたスクリーンショットレイアウトの適用

レイアウトを適用するには、左側に表示されるツールバー、または以下に示すコンテキストメニューから、任意のレイアウトを選択します。

同様に、トップレベルのレイアウトは、コンテナウィジェット(QGroupBox )またはページベースのコンテナウィジェット(QTabWidget 、QToolBox 、QStackedWidget )の各ページに、それぞれ設定されます。この操作を正常に行うには、対象のコンテナウィジェットを選択しておく必要があります。

トップレベルのレイアウトは、オブジェクトインスペクタには個別のオブジェクトとして表示されません。そのプロパティは、プロパティエディタ内のメインフォーム、コンテナウィジェット、またはコンテナウィジェットのページのウィジェットプロパティの下に表示されます。

エディタ内で右クリックしてレイアウトの種類を変更する別のオプションを示すスクリーンショット

レイアウトオブジェクト

レイアウトオブジェクトは、既存のオブジェクトのグループにレイアウトを適用することで作成されます。これを行うには、管理が必要なオブジェクトを選択し、メインツールバー、[フォーム] メニュー、またはフォームのコンテキストメニューを使用して、標準レイアウトのいずれかを適用します。

レイアウトオブジェクトは、フォーム上で赤い枠で示され、オブジェクトインスペクタにはオブジェクトとして表示されます。そのプロパティ(余白や制約)は、プロパティエディタに表示されます。

レイアウトオブジェクトを選択し、他のウィジェットやレイアウトオブジェクトとともに別のレイアウト内に配置することで、レイアウト階層を構築することができます。

子レイアウトオブジェクトが選択されている場合、Shiftキーを押しながらそのオブジェクトをクリックすることで、親レイアウトオブジェクトを選択できます。これにより、フレームが小さいために通常は選択が難しい階層内の特定のレイアウトを選択することが可能になります。

レイアウトへのオブジェクトの挿入

オブジェクトを現在の位置からドラッグし、目的の場所にドロップすることで、既存のレイアウトにオブジェクトを挿入できます。オブジェクトをレイアウト上にドラッグすると、その上に青いカーソルが表示され、オブジェクトが追加される位置を示します。

レイアウト内のウィジェットをドラッグ&ドロップで移動する方法を示したスクリーンショット

レイアウトへのオブジェクトの挿入

レイアウトの種類

水平および垂直(ボックス)レイアウト

フォーム上でオブジェクトを配置する最も簡単な方法は、水平または垂直のレイアウトに配置することです。水平レイアウトでは、その中のウィジェットが水平方向に揃えられ、垂直レイアウトでは、垂直方向に揃えられます。

水平および垂直レイアウトは、任意の深さまで組み合わせたりネストしたりすることができます。ただし、オブジェクトの配置をより細かく制御する必要がある場合は、グリッドレイアウトの使用を検討してください。

グリッドレイアウト

グリッドレイアウトにオブジェクトを配置することで、複雑なフォームレイアウトを作成できます。この種のレイアウトでは、フォームデザイナーはウィジェットをフォーム上に配置する際により大きな自由度を得られますが、レイアウトの柔軟性が大幅に低下する可能性があります。しかし、フォームレイアウトの種類によっては、水平および垂直レイアウトをネストして配置するよりも、グリッド配置の方がはるかに適している場合もあります。

フォームレイアウト

QFormLayout クラスは、2列構成のフォーム内のウィジェットを管理します。左の列にはラベルが配置され、右の列にはラインエディットやスピンボックスなどのフィールドウィジェットが配置されます。QFormLayout クラスは、さまざまなプラットフォームのルックアンドフィールガイドラインに準拠しており、行が長くなった場合の改行もサポートしています。

2つのラベルがあり、各ラベルの横にテキストフィールドが配置されているレイアウト例を示すスクリーンショット

上記のUIファイルを使用すると、以下に示すようなプレビューが表示されます。

WindowsmacOSCleanlooks
Windowsでのレイアウトプレビューを示すスクリーンショットmacOSでのレイアウトプレビューを示すスクリーンショットWindows XP上で、すっきりとした見た目のレイアウトプレビューを示すスクリーンショット

スプリッターレイアウト

フォーム上のオブジェクトのレイアウトを管理するもう1つの一般的な方法は、オブジェクトをスプリッターに配置することです。これらのスプリッターは、通常のレイアウトと同様にオブジェクトを水平または垂直に配置しますが、ユーザーが各オブジェクトに割り当てるスペースの量を調整することも可能です。

レイアウトを「スプリッターで縦に配置」に変更する様子を示すスクリーンショット

QSplitter はコンテナウィジェットですが、Qt Widgets Designer では、スプリッターオブジェクトを既存のウィジェットに適用されるレイアウトとして扱います。ウィジェットのグループをスプリッター内に配置するには、ここで説明した手順に従ってそれらを選択し、適切なツールバーボタン、キーボードショートカット、またはコンテキストメニューの「レイアウト」項目を使用して、スプリッターレイアウトを適用します。

ショートカットキー

標準のツールバーやコンテキストメニューの項目に加え、ウィジェットにレイアウトを適用するための一連のキーボードショートカットも用意されています。

レイアウトショートカット説明
水平Ctrl+1選択したオブジェクトを水平レイアウトに配置します。
縦Ctrl+2選択したオブジェクトを縦方向のレイアウトに配置します。
グリッドCtrl+5選択したオブジェクトをグリッドレイアウトで配置します。
フォームCtrl+6選択したオブジェクトをフォームレイアウトに配置します。
水平スプリッターCtrl+3水平スプリッターを作成し、選択したオブジェクトをその中に配置します。
縦方向のスプリッターCtrl+4縦方向のスプリッターを作成し、選択したオブジェクトをその中に配置します。
サイズを調整Ctrl+J各子オブジェクトがその内容を表示するのに十分なスペースを確保できるよう、レイアウトのサイズを調整します。詳細については、QWidget::adjustSize() を参照してください。

注: Ctrl+0 は、レイアウトを分割するために使用します。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.