このページでは

QBoxLayout Class

QBoxLayout クラスは、子ウィジェットを水平方向または垂直方向に配置します。詳細...

ヘッダー: #include <QBoxLayout>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
継承元: QLayout
継承元:

QHBoxLayout およびQVBoxLayout

パブリック型

enum Direction { LeftToRight, RightToLeft, TopToBottom, BottomToTop }

パブリック関数

QBoxLayout(QBoxLayout::Direction dir, QWidget *parent = nullptr)
virtual ~QBoxLayout()
void addLayout(QLayout *layout, int stretch = 0)
void addSpacerItem(QSpacerItem *spacerItem)
void addSpacing(int size)
void addStretch(int stretch = 0)
void addStrut(int size)
void addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())
QBoxLayout::Direction direction() const
void insertItem(int index, QLayoutItem *item)
void insertLayout(int index, QLayout *layout, int stretch = 0)
void insertSpacerItem(int index, QSpacerItem *spacerItem)
void insertSpacing(int index, int size)
void insertStretch(int index, int stretch = 0)
void insertWidget(int index, QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())
void setDirection(QBoxLayout::Direction direction)
void setStretch(int index, int stretch)
bool setStretchFactor(QWidget *widget, int stretch)
bool setStretchFactor(QLayout *layout, int stretch)
int stretch(int index) const

再実装されたパブリック関数

virtual void addItem(QLayoutItem *item) override
virtual int count() const override
virtual Qt::Orientations expandingDirections() const override
virtual bool hasHeightForWidth() const override
virtual int heightForWidth(int w) const override
virtual void invalidate() override
virtual QLayoutItem *itemAt(int index) const override
virtual QSize maximumSize() const override
virtual int minimumHeightForWidth(int w) const override
virtual QSize minimumSize() const override
virtual void setGeometry(const QRect &r) override
virtual void setSpacing(int spacing) override
virtual QSize sizeHint() const override
virtual int spacing() const override
virtual QLayoutItem *takeAt(int index) override

詳細な説明

QBoxLayout は、(親レイアウトまたはparentWidget() から)割り当てられたスペースを、一列のボックスに分割し、各管理対象ウィジェットが 1 つのボックスを埋めるようにします。

横並びの5つのボタン

QBoxLayout の向きが `Qt::Horizontal ` の場合、ボックスは適切なサイズで 1 行に配置されます。各ウィジェット(またはその他のボックス)は、少なくとも最小サイズ、最大で最大サイズを確保します。余剰スペースは、ストレッチ係数(詳細は後述)に従って共有されます。

縦並びのボタン5つ

QBoxLayoutの向きがQt::Vertical の場合、ボックスは適切なサイズで列に配置されます。

QBoxLayout を作成する最も簡単な方法は、利便性向上のためのクラスのいずれかを使用することです。例えば、QHBoxLayout (Qt::Horizontal ボックス用)やQVBoxLayout (Qt::Vertical ボックス用)などです。また、QBoxLayout のコンストラクタを直接使用し、方向をLeftToRight 、RightToLeft 、TopToBottom 、またはBottomToTop として指定することもできます。

QBoxLayoutが最上位のレイアウトではない場合(つまり、ウィジェットの領域や子要素をすべて管理していない場合)、何か操作を行う前に、それを親レイアウトに追加する必要があります。レイアウトを追加する通常の方法は、parentLayout->addLayout()を呼び出すことです。

これが完了したら、次の4つの関数のいずれかを使用して、QBoxLayoutにボックスを追加し、ウィジェットのストレッチ係数を設定できます。

  • addWidget():QBoxLayoutにウィジェットを追加し、そのウィジェットのストレッチ係数を設定します。(ストレッチ係数は、ボックスの行方向に沿って適用されます。)
  • addSpacing():空のボックスを作成します。これは、見やすくゆとりのあるダイアログを作成するために使用する関数の1つです。マージンの設定方法については、以下を参照してください。
  • addStretch():空の伸縮可能なボックスを作成します。
  • addLayout():別のQLayout を含むボックスを行に追加し、そのレイアウトのストレッチ係数を設定します。

insertWidget()、insertSpacing()、insertStretch()、またはinsertLayout() を使用して、レイアウト内の指定した位置にボックスを挿入します。

QBoxLayout には、2 種類のマージン幅も用意されています。

  • setContentsMargins() は、ウィジェットの各辺の外枠の幅を設定します。これは、QBoxLayout の 4 辺それぞれに沿って確保されるスペースの幅です。
  • setSpacing() は、隣接するボックス間の幅を設定します。(addSpacing() を使用すると、特定の場所でより多くのスペースを確保できます。)

マージンのデフォルト値はスタイルによって指定されます。ほとんどの Qt スタイルで指定されているデフォルトのマージンは、子ウィジェットでは 9、ウィンドウでは 11 です。間隔のデフォルト値は、トップレベルレイアウトのマージン幅と同じか、親レイアウトと同じになります。

レイアウトからウィジェットを削除するには、removeWidget() を呼び出します。また、ウィジェットに対してQWidget::hide() を呼び出すと、QWidget::show() が呼び出されるまで、事実上そのウィジェットがレイアウトから削除されます。

QVBoxLayout やQHBoxLayout には便利なコンストラクタが用意されているため、ほとんどの場合、QBoxLayout よりもこれらを使用することになるでしょう。

QGridLayout 、QStackedLayout 、および「レイアウト管理」も参照してください 。

メンバ型のドキュメント

enum QBoxLayout::Direction

このタイプは、ボックスレイアウトの方向を決定するために使用されます。

定数値説明
QBoxLayout::LeftToRight0左から右への水平方向。
QBoxLayout::RightToLeft1右から左への水平方向。
QBoxLayout::TopToBottom2上から下への水平方向。
QBoxLayout::BottomToTop3下から上への縦方向。

メンバー関数のドキュメント

[explicit] QBoxLayout::QBoxLayout(QBoxLayout::Direction dir, QWidget *parent = nullptr)

方向 `dir ` および親ウィジェット `parent` を持つ新しい `QBoxLayout` を生成します。

このレイアウトは、parent の最上位レイアウトとして直接設定されます。ウィジェットには、最上位レイアウトは 1 つしか存在できません。これはQWidget::layout() によって返されます。

direction() およびQWidget::setLayout()も参照してください 。

[virtual noexcept] QBoxLayout::~QBoxLayout()

このボックスレイアウトを破棄します。

レイアウト内のウィジェットは破棄されません。

[override virtual] void QBoxLayout::addItem(QLayoutItem *item)

QLayout::addItem(QLayoutItem *item) を再実装します。

void QBoxLayout::addLayout(QLayout *layout, int stretch = 0)

ボックスの末尾にlayout を追加し、シリアルストレッチ係数をstretch に設定します。

layout ボックスレイアウトの子要素となります。

insertLayout()、addItem()、およびaddWidget()も参照してください 。

void QBoxLayout::addSpacerItem(QSpacerItem *spacerItem)

このボックスレイアウトの末尾に「spacerItem 」を追加します。

spacerItem の所有権がこのレイアウトに渡されます。

addSpacing() およびaddStretch()も参照してください 。

void QBoxLayout::addSpacing(int size)

このボックスレイアウトの末尾に、サイズがsize の伸縮しないスペース(QSpacerItem )を追加します。QBoxLayout は、デフォルトのマージンと間隔を指定します。この関数は、追加のスペースを追加します。

insertSpacing()、addItem()、およびQSpacerItemも参照してください 。

void QBoxLayout::addStretch(int stretch = 0)

このボックスレイアウトの末尾に、最小サイズが 0 で、ストレッチ係数がstretch である伸縮可能なスペース(QSpacerItem )を追加します。

insertStretch()、addItem()、およびQSpacerItemも参照してください 。

void QBoxLayout::addStrut(int size)

ボックスの垂直方向の寸法(例えば、ボックスがLeftToRight の場合、高さ)を、最小値size に制限します。その他の制約条件により、この制限値がさらに大きくなる場合があります。

addItem()も参照してください 。

void QBoxLayout::addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())

このボックスレイアウトの末尾に、ストレッチ係数stretch 、配置alignment を持つwidget を追加します。

ストレッチ係数は、QBoxLayout 内のdirection にのみ適用され、このQBoxLayout 内の他のボックスやウィジェットを基準とします。ストレッチ係数の大きいウィジェットやボックスほど、より大きく拡張されます。

ストレッチ係数が 0 で、かつそのQBoxLayout 内の他の要素に 0 より大きいストレッチ係数を持つものが存在しない場合、スペースは関与する各ウィジェットのQWidget::sizePolicy() に基づいて配分されます。

配置はalignment で指定されます。デフォルトの配置は 0 で、これはウィジェットがセル全体を埋めることを意味します。

widget QLayout::parentWidget() の子要素となります。

関連項目: insertWidget()、addItem()、addLayout()、addStretch()、addSpacing()、およびaddStrut()。

[override virtual] int QBoxLayout::count() const

QLayout::count() const を再実装します。

QBoxLayout::Direction QBoxLayout::direction() const

ボックスの向きを返します。addWidget() およびaddSpacing() はこの方向で動作し、stretch はこの方向に伸びます。

setDirection()、QBoxLayout::Direction 、addWidget()、およびaddSpacing()も参照してください 。

[override virtual] Qt::Orientations QBoxLayout::expandingDirections() const

QLayout::expandingDirections() const を再実装します。

[override virtual] bool QBoxLayout::hasHeightForWidth() const

QLayoutItem::hasHeightForWidth() const を再実装します。

[override virtual] int QBoxLayout::heightForWidth(int w) const

QLayoutItem::heightForWidth(int) const を再実装します。

void QBoxLayout::insertItem(int index, QLayoutItem *item)

このボックスレイアウトのindex の位置に、item を挿入します。インデックスは負の数、または0からcount()までの範囲(両端を含む)でなければなりません。index が負の数、またはcount()の場合、その項目は末尾に追加されます。

item の所有権は、このレイアウトに渡されます。

addItem()、insertWidget()、insertLayout()、insertStretch()、およびinsertSpacing()も参照してください 。

void QBoxLayout::insertLayout(int index, QLayout *layout, int stretch = 0)

位置index に、ストレッチ係数stretch でlayout を挿入します。index が負の場合、レイアウトは末尾に追加されます。

layout ボックスレイアウトの子要素となります。

addLayout() およびinsertItem()も参照してください 。

void QBoxLayout::insertSpacerItem(int index, QSpacerItem *spacerItem)

位置index にspacerItem を挿入します。最小サイズとストレッチ係数は0に設定されます。index が負の場合、スペースは末尾に追加されます。

spacerItem の所有権は、このレイアウトに渡されます。

addSpacerItem()、insertStretch()、およびinsertSpacing()も参照してください 。

void QBoxLayout::insertSpacing(int index, int size)

位置index に、サイズsize の伸縮しないスペース(QSpacerItem )を挿入します。index が負の値の場合、スペースは末尾に追加されます。

ボックスレイアウトにはデフォルトの余白と間隔が設定されています。この関数は、そこに追加のスペースを追加します。

addSpacing()、insertItem()、およびQSpacerItemも参照してください 。

void QBoxLayout::insertStretch(int index, int stretch = 0)

位置index に、最小サイズを0、伸縮係数をstretch とする伸縮可能なスペース(QSpacerItem )を挿入します。index が負の場合、スペースは末尾に追加されます。

addStretch()、insertItem()、およびQSpacerItemも参照してください 。

void QBoxLayout::insertWidget(int index, QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())

位置index に、ストレッチ係数stretch 、配置alignment でwidget を挿入します。index が負の場合、ウィジェットは末尾に追加されます。

ストレッチ係数は、QBoxLayout のdirection 内でのみ適用され、このQBoxLayout 内の他のボックスやウィジェットを基準としています。ストレッチ係数が大きいウィジェットやボックスほど、より大きく拡張されます。

ストレッチ係数が 0 で、かつそのQBoxLayout 内の他の要素のストレッチ係数がすべて 0 より大きい場合、スペースは、関与する各ウィジェットのQWidget::sizePolicy() に基づいて分配されます。

配置は `alignment` によって指定されます。デフォルトの配置は 0 で、これはウィジェットがセル全体を埋めることを意味します。

widget QLayout::parentWidget() の子要素となります。

addWidget() およびinsertItem()も参照してください 。

[override virtual] void QBoxLayout::invalidate()

QLayout::invalidate() を再実装します。

キャッシュされた情報をリセットします。

[override virtual] QLayoutItem *QBoxLayout::itemAt(int index) const

QLayout::itemAt(int index) const を再実装します。

[override virtual] QSize QBoxLayout::maximumSize() const

QLayout::maximumSize() const を再実装します。

[override virtual] int QBoxLayout::minimumHeightForWidth(int w) const

QLayoutItem::minimumHeightForWidth(int w) const の再実装。

[override virtual] QSize QBoxLayout::minimumSize() const

QLayout::minimumSize() const を再実装します。

void QBoxLayout::setDirection(QBoxLayout::Direction direction)

このレイアウトの方向をdirection に設定します。

direction()も参照してください 。

[override virtual] void QBoxLayout::setGeometry(const QRect &r)

QLayout::setGeometry(const QRect &r) を再実装します。

[override virtual] void QBoxLayout::setSpacing(int spacing)

プロパティ「QLayout::spacing 」のアクセス関数を再実装します。

QLayout::setSpacing() を再実装します。spacing プロパティをspacing に設定します。

QLayout::setSpacing() およびspacing()も参照してください 。

void QBoxLayout::setStretch(int index, int stretch)

位置index.のストレッチ係数をstretch に設定します。

stretch()も参照してください 。

bool QBoxLayout::setStretchFactor(QWidget *widget, int stretch)

widget のストレッチ係数をstretch に設定し、このレイアウト(子レイアウトを除く)内にwidget が見つかった場合はtrueを返し、見つからない場合はfalse を返します。

setAlignment()も参照してください 。

bool QBoxLayout::setStretchFactor(QLayout *layout, int stretch)

レイアウト `layout ` のストレッチ係数を `stretch ` に設定し、このレイアウト内(子レイアウトを除く)に `layout ` が見つかった場合は `true ` を返し、見つからない場合は `false` を返します。

これはオーバーロードされた関数です。

[override virtual] QSize QBoxLayout::sizeHint() const

QLayoutItem::sizeHint() const を再実装します。

[override virtual] int QBoxLayout::spacing() const

プロパティ「QLayout::spacing 」のアクセス関数を再実装します。

QLayout::spacing() を再実装します。spacing プロパティが有効な場合、その値が返されます。 そうでない場合は、spacingプロパティの値を計算して返します。ウィジェット内のレイアウトのスペースはスタイルに依存するため、親がウィジェットである場合は、スタイルからレイアウトの(水平または垂直の)スペースを照会します。そうでない場合、親はレイアウトであるため、親レイアウトに対してspacing()を照会します。

QLayout::spacing() およびsetSpacing()も参照してください 。

int QBoxLayout::stretch(int index) const

位置index における伸長係数を返します。

setStretch()も参照してください 。

[override virtual] QLayoutItem *QBoxLayout::takeAt(int index)

QLayout::takeAt(int index) を再実装します。

© 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.