QGridLayout Class

QGridLayout クラスは、ウィジェットをグリッドにレイアウトします。詳細...

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

プロパティ

パブリック関数

QGridLayout(QWidget *parent = nullptr)
virtual ~QGridLayout()
void addItem(QLayoutItem *item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = Qt::Alignment())
void addLayout(QLayout *layout, int row, int column, Qt::Alignment alignment = Qt::Alignment())
void addLayout(QLayout *layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
void addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment())
void addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
QRect cellRect(int row, int column) const
int columnCount() const
int columnMinimumWidth(int column) const
int columnStretch(int column) const
void getItemPosition(int index, int *row, int *column, int *rowSpan, int *columnSpan) const
int horizontalSpacing() const
QLayoutItem *itemAtPosition(int row, int column) const
Qt::Corner originCorner() const
int rowCount() const
int rowMinimumHeight(int row) const
int rowStretch(int row) const
void setColumnMinimumWidth(int column, int minSize)
void setColumnStretch(int column, int stretch)
void setHorizontalSpacing(int spacing)
void setOriginCorner(Qt::Corner corner)
void setRowMinimumHeight(int row, int minSize)
void setRowStretch(int row, int stretch)
void setVerticalSpacing(int spacing)
int verticalSpacing() const

再実装パブリック関数

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 &rect) override
virtual void setSpacing(int spacing) override
virtual QSize sizeHint() const override
virtual int spacing() const override
virtual QLayoutItem *takeAt(int index) override

再実装された保護された関数

virtual void addItem(QLayoutItem *item) override

詳細説明

QGridLayoutは、(親レイアウトまたはparentWidget()によって)利用可能なスペースを受け取り、行と列に分割し、管理する各ウィジェットを適切なセルに配置します。

ここでは列について説明しますが、行についても同等の関数があります。

各列には最小幅とストレッチ・ファクターがある。最小幅は、setColumnMinimumWidth ()を使って設定された幅と、その列の各ウィジェットの最小幅のうち最大のものである。ストレッチ・ファクターは、setColumnStretch() を使って設定され、列が利用可能なスペースのうち、必要な最小値以上にどれだけのスペースを確保するかを決定します。

通常、各管理ウィジェットまたはレイアウトは、addWidget() を使用して、それ自身のセルに配置されます。また、addItem() とaddWidget() の行と列をまたぐオーバーロードを使用して、ウィジェットが複数のセルを占有することも可能です。この場合、QGridLayoutは、(ストレッチファクターに基づいて)列/行にサイズを分配する方法を推測します。

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

この図は、5列3行のグリッドを持つダイアログの断片を示しています(グリッドはマゼンタで重ねて表示されています):

A grid layout

このダイアログのカラム0、2、4は、QLabelQLineEdit 、QListBoxで構成されています。列1と3はsetColumnMinimumWidth ()で作られたプレースホルダーです。0行目は3つのQLabel オブジェクト、1行目は3つのQLineEdit オブジェクト、2行目は3つのQListBoxオブジェクトで構成されています。列と列の間に適切なスペースを確保するために、プレースホルダーの列(1と3)を使用した。

列と行は同じ幅や高さではないことに注意してください。2つの列の幅を同じにしたい場合は、最小幅と伸縮率を同じにする必要があります。これを行うには、setColumnMinimumWidth() とsetColumnStretch() を使用します。

QGridLayoutがトップ・レベル・レイアウトでない場合(つまり、ウィジェットのすべての領域と子を管理しない場合)、作成時に親レイアウトに追加する必要があります。レイアウトを追加する通常の方法は、親レイアウトでaddLayout ()を呼び出すことです。

レイアウトを追加したら、addWidget(),addItem(),addLayout() を使用して、グリッドレイアウトのセルにウィジェットや他のレイアウトを配置することができます。

QGridLayoutには、contents marginspacing() の2つのマージン幅もあります。コンテンツ・マージンは、QGridLayoutの4つの辺に沿って確保されたスペースの幅です。spacing()は、隣接するボックス間に自動的に割り当てられるスペースの幅です。

コンテンツ・マージンのデフォルト値は、style によって提供されます。 Qt スタイルが指定するデフォルト値は、子ウィジェットでは 9、ウィンドウでは 11 です。スペーシングのデフォルトは、トップレベルレイアウトのマージン幅と同じか、親レイアウトと同じです。

QBoxLayout,QStackedLayout,レイアウト管理,基本レイアウトの例も参照してください

プロパティ・ドキュメント

horizontalSpacing : int

このプロパティは、横並びにレイアウトされたウィジェットの間隔を保持します。

値が明示的に設定されていない場合、レイアウトの水平方向の間隔は、親レイアウト、または親ウィジェットのスタイル設定から継承されます。

アクセス関数:

int horizontalSpacing() const
void setHorizontalSpacing(int spacing)

verticalSpacingQStyle::pixelMetric() 、PM_LayoutHorizontalSpacingも参照してください

verticalSpacing : int

このプロパティは、互いの上にレイアウトされるウィジェット間の間隔を保持します。

値が明示的に設定されていない場合、レイアウトの垂直方向の間隔は、親レイアウト、または親ウィジェットのスタイル設定から継承されます。

アクセス関数:

int verticalSpacing() const
void setVerticalSpacing(int spacing)

horizontalSpacingQStyle::pixelMetric()、PM_LayoutHorizontalSpacingも参照のこと

メンバ関数ドキュメント

[explicit] QGridLayout::QGridLayout(QWidget *parent = nullptr)

親ウィジェットparent を持つ新しい QGridLayout を構築します。レイアウトは、最初は 1 行 1 列で、新しいアイテムが挿入されると拡張されます。

このレイアウトは、parent のトップ・レベル・レイアウトとして直接設定されます。ウィジェットのトップレベル・レイアウトは1つだけです。それは、QWidget::layout()によって返される。

parentnullptr の場合、このグリッド・レイアウトを別のレイアウトに挿入するか、QWidget::setLayout() を使用してウィジェットのレイアウトとして設定する必要があります。

QWidget::setLayout()も参照してください

[virtual noexcept] QGridLayout::~QGridLayout()

グリッドレイアウトを破棄します。トップレベルグリッドの場合、ジオメトリ管理は終了します。

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

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

再実装:QLayout::addItem(QLayoutItem *item)。

void QGridLayout::addItem(QLayoutItem *item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = Qt::Alignment())

row,column の位置にitem を追加し、rowSpan の行とcolumnSpan の列にまたがり、alignment に従って整列させます。rowSpan および/またはcolumnSpan が -1 の場合、アイテムはそれぞれ下端および/または右端まで拡張されます。レイアウトはitem の所有権を持ちます。

警告 この関数を使用して、子レイアウトや子ウィジェット・アイテムを追加しないでください。代わりにaddLayout() またはaddWidget() を使用してください。

void QGridLayout::addLayout(QLayout *layout, int row, int column, Qt::Alignment alignment = Qt::Alignment())

layout をグリッドの位置 (row,column) に配置する。左上の位置は (0, 0) です。

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

アライメントが0でない場合は、レイアウトが利用可能なスペースを埋めるために成長するのではなく、sizeHint() に従ってサイズ調整されるべきであることを示します。

layout はグリッド・レイアウトの子になります。

void QGridLayout::addLayout(QLayout *layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())

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

このバージョンでは、セルグリッドに複数の行/列にまたがるレイアウトlayout を追加します。セルはrow から始まり、columnrowSpan 行とcolumnSpan 列にまたがる。

rowSpan および/またはcolumnSpan が -1 の場合、レイアウトはそれぞれ下端および/または右端まで拡張されます。

void QGridLayout::addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment())

row,column のセルグリッドに、与えられたwidget を追加します。デフォルトでは左上の位置は (0, 0) です。

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

void QGridLayout::addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())

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

このバージョンは、与えられたwidget を、複数の行/列にまたがるセルグリッドに追加する。セルはfromRow から始まり、fromColumnrowSpan 行とcolumnSpan 列にまたがる。widget は、与えられたalignment を持つ。

rowSpan および/またはcolumnSpan が -1 の場合、ウィジェットはそれぞれ下端および/または右端まで拡張されます。

QRect QGridLayout::cellRect(int row, int column) const

グリッド内の行row および列column を持つセルのジオメトリを返す。row またはcolumn がグリッドの外側にある場合、無効な矩形を返します。

警告: Qt の現在のバージョンでは、この関数はsetGeometry() が呼び出されるまで、つまりparentWidget() が表示された後でないと、有効な結果を返しません。

int QGridLayout::columnCount() const

このグリッドのカラム数を返します。

int QGridLayout::columnMinimumWidth(int column) const

column の列間隔を返す。

setColumnMinimumWidth()も参照

int QGridLayout::columnStretch(int column) const

column の伸張係数を返す。

setColumnStretch()も参照

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

再実装:QLayout::count() const.

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

再実装:QLayout::expandingDirections() const.

void QGridLayout::getItemPosition(int index, int *row, int *column, int *rowSpan, int *columnSpan) const

与えられたindex を持つアイテムの位置情報を返す。

rowcolumn として渡された変数はレイアウト内のアイテムの位置で更新され、rowSpancolumnSpan 変数はアイテムの縦方向と横方向のスパンで更新されます。

itemAtPosition() とitemAt()も参照してください

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

再実装:QLayoutItem::hasHeightForWidth() const.

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

再インプリメント:QLayoutItem::heightForWidth(int) const.

[override virtual] void QGridLayout::invalidate()

再インプリメント:QLayout::invalidate().

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

再実装:QLayout::itemAt(int index) const.

QLayoutItem *QGridLayout::itemAtPosition(int row, int column) const

セル (row,column) を占めるレイアウト項目、またはセルが空の場合はnullptr を返します。

getItemPosition() およびindexOf()も参照して ください。

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

再実装:QLayout::maximumSize() const.

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

再インプリメント:QLayoutItem::minimumHeightForWidth(int w) const.

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

再実装:QLayout::minimumSize() const.

Qt::Corner QGridLayout::originCorner() const

グリッドの原点、つまり位置 (0, 0) に使用するコーナーを返します。

setOriginCorner()も参照ください

int QGridLayout::rowCount() const

このグリッドの行数を返します。

int QGridLayout::rowMinimumHeight(int row) const

row 行に設定された最小幅を返す。

setRowMinimumHeight()も参照

int QGridLayout::rowStretch(int row) const

row 行のストレッチ係数を返す。

setRowStretch()も参照

void QGridLayout::setColumnMinimumWidth(int column, int minSize)

カラムcolumn の最小幅をminSize ピクセルに設定する。

columnMinimumWidth() およびsetRowMinimumHeight()も参照

void QGridLayout::setColumnStretch(int column, int stretch)

column のストレッチファクターをstretch に設定する。

ストレッチ・ファクターは、このグリッドの他のカラムに対する相対的なものです。ストレッチ・ファクターが高い列は、利用可能なスペースをより多く取ります。

デフォルトのストレッチ・ファクターは0です。ストレッチ・ファクターが0で、このテーブルの他のカラムがまったく成長できない場合でも、カラムは成長する可能性があります。

別の方法としては、QSpacerItem を使用してaddItem() でスペースを追加する方法がある。

columnStretch() およびsetRowStretch()も参照の こと。

[override virtual] void QGridLayout::setGeometry(const QRect &rect)

再実装:QLayout::setGeometry(const QRect &r).

void QGridLayout::setOriginCorner(Qt::Corner corner)

グリッドの原点コーナー、すなわち位置 (0, 0) をcorner に設定します。

originCorner()も参照

void QGridLayout::setRowMinimumHeight(int row, int minSize)

row 行の高さの最小値をminSize ピクセルに設定する。

rowMinimumHeight() およびsetColumnMinimumWidth()も参照

void QGridLayout::setRowStretch(int row, int stretch)

row のストレッチファクターをstretch に設定する。

ストレッチ・ファクターは、このグリッドの他の行に対する相対値です。伸縮率が高い行ほど、使用可能な領域が広くなります。

デフォルトのストレッチファクターは 0 です。ストレッチファクターが 0 で、この表の他の行がまったく成長できない場合でも、その行は成長する可能性があります。

rowStretch(),setRowMinimumHeight(),setColumnStretch()も参照

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

QLayout::spacing

この関数は、縦方向と横方向のスペーシングの両方をspacing に設定する。

spacing(),setVerticalSpacing(),setHorizontalSpacing()も参照

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

再実装:QLayoutItem::sizeHint() const.

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

QLayout::spacing

垂直方向の間隔が水平方向の間隔と等しい場合、この関数はその値を返し、そうでない場合は -1 を返す。

setSpacing(),verticalSpacing(),horizontalSpacing()も参照のこと

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

再インプリメント:QLayout::takeAt(int index).

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