QGridLayout Class

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

Header: #include <QGridLayout>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Inherits: 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())

与えられたwidgetrow,column のセルグリッドに追加する。デフォルトでは左上の位置は (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

再リプルメント: (int w) 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) を参照してください。

©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。