このページでは

QFormLayout Class

QFormLayout クラスは、入力ウィジェットとその関連するラベルからなるフォームを管理します。詳細...

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

パブリック型

struct TakeRowResult
enum FieldGrowthPolicy { FieldsStayAtSizeHint, ExpandingFieldsGrow, AllNonFixedFieldsGrow }
enum ItemRole { LabelRole, FieldRole, SpanningRole }
enum RowWrapPolicy { DontWrapRows, WrapLongRows, WrapAllRows }

プロパティ

パブリック関数

QFormLayout(QWidget *parent = nullptr)
virtual ~QFormLayout()
void addRow(QWidget *label, QWidget *field)
void addRow(QLayout *layout)
void addRow(QWidget *widget)
void addRow(QWidget *label, QLayout *field)
void addRow(const QString &labelText, QLayout *field)
void addRow(const QString &labelText, QWidget *field)
QFormLayout::FieldGrowthPolicy fieldGrowthPolicy() const
Qt::Alignment formAlignment() const
void getItemPosition(int index, int *rowPtr, QFormLayout::ItemRole *rolePtr) const
void getLayoutPosition(QLayout *layout, int *rowPtr, QFormLayout::ItemRole *rolePtr) const
void getWidgetPosition(QWidget *widget, int *rowPtr, QFormLayout::ItemRole *rolePtr) const
int horizontalSpacing() const
void insertRow(int row, QWidget *label, QWidget *field)
void insertRow(int row, QLayout *layout)
void insertRow(int row, QWidget *widget)
void insertRow(int row, QWidget *label, QLayout *field)
void insertRow(int row, const QString &labelText, QLayout *field)
void insertRow(int row, const QString &labelText, QWidget *field)
(since 6.4) bool isRowVisible(int row) const
(since 6.4) bool isRowVisible(QLayout *layout) const
(since 6.4) bool isRowVisible(QWidget *widget) const
QLayoutItem *itemAt(int row, QFormLayout::ItemRole role) const
Qt::Alignment labelAlignment() const
QWidget *labelForField(QWidget *field) const
QWidget *labelForField(QLayout *field) const
void removeRow(int row)
void removeRow(QLayout *layout)
void removeRow(QWidget *widget)
int rowCount() const
QFormLayout::RowWrapPolicy rowWrapPolicy() const
void setFieldGrowthPolicy(QFormLayout::FieldGrowthPolicy policy)
void setFormAlignment(Qt::Alignment alignment)
void setHorizontalSpacing(int spacing)
void setItem(int row, QFormLayout::ItemRole role, QLayoutItem *item)
void setLabelAlignment(Qt::Alignment alignment)
void setLayout(int row, QFormLayout::ItemRole role, QLayout *layout)
(since 6.4) void setRowVisible(int row, bool on)
(since 6.4) void setRowVisible(QLayout *layout, bool on)
(since 6.4) void setRowVisible(QWidget *widget, bool on)
void setRowWrapPolicy(QFormLayout::RowWrapPolicy policy)
void setVerticalSpacing(int spacing)
void setWidget(int row, QFormLayout::ItemRole role, QWidget *widget)
QFormLayout::TakeRowResult takeRow(int row)
QFormLayout::TakeRowResult takeRow(QLayout *layout)
QFormLayout::TakeRowResult takeRow(QWidget *widget)
int verticalSpacing() 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 width) const override
virtual void invalidate() override
virtual QLayoutItem *itemAt(int index) 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

詳細な説明

QFormLayout は、子ウィジェットを 2 列形式で配置する便利なレイアウトクラスです。左列はラベルで構成され、右列は「フィールド」ウィジェット(ラインエディタ、スピンボックスなど)で構成されます。

従来、このような2列のフォームレイアウトは、QGridLayout を使用して実現されていました。QFormLayoutは、これよりも高レベルな代替手段であり、以下の利点を提供します。

  • 各プラットフォームのルック・アンド・フィールガイドラインへの準拠。

    たとえば、macOS Aquaや KDE のガイドラインでは、ラベルは右揃えにするよう規定されていますが、Windows や GNOME アプリケーションでは通常、左揃えが使用されます。

  • 長い行の折り返しに対応。

    ディスプレイの小さいデバイスでは、QFormLayoutをwrap long rows に設定したり、wrap all rows に設定したりすることもできます。

  • ラベルとフィールドのペアを作成するための便利な API。

    QString とQWidget *を受け取るaddRow()のオーバーロードは、内部でQLabel を生成し、そのバディを自動的に設定します。これにより、次のようなコードを記述できます:

    QFormLayout *formLayout = new QFormLayout(this);
    formLayout->addRow(tr("&Name:"), nameLineEdit);
    formLayout->addRow(tr("&Email:"), emailLineEdit);
    formLayout->addRow(tr("&Age:"), ageSpinBox);

    これを、QGridLayout を使用して記述された次のコードと比較してみてください:

    QGridLayout *gridLayout = new QGridLayout(this);
    
    nameLabel = new QLabel(tr("&Name:"));
    nameLabel->setBuddy(nameLineEdit);
    
    emailLabel = new QLabel(tr("&Name:"));
    emailLabel->setBuddy(emailLineEdit);
    
    ageLabel = new QLabel(tr("&Name:"));
    ageLabel->setBuddy(ageSpinBox);
    
    gridLayout->addWidget(nameLabel, 0, 0);
    gridLayout->addWidget(nameLineEdit, 0, 1);
    gridLayout->addWidget(emailLabel, 1, 0);
    gridLayout->addWidget(emailLineEdit, 1, 1);
    gridLayout->addWidget(ageLabel, 2, 0);
    gridLayout->addWidget(ageSpinBox, 2, 1);

以下の表は、さまざまなスタイルにおけるデフォルトの外観を示しています。

QCommonStyle 派生スタイル(QPlastiqueStyleを除く)QMacStyleQPlastiqueStyleQt拡張スタイル
従来のデスクトップスタイルのフォームレイアウトmacOS Aqua スタイルのフォームレイアウトKDE Plastique スタイルのフォームレイアウトQt Extended スタイルのフォームレイアウト
Windows、GNOME、および以前のバージョンのKDEで使用される従来のスタイル。ラベルは左揃えで、展開可能なフィールドは利用可能なスペースいっぱいに広がります。(これは通常、2列のQGridLayout を使用した場合の表示に対応します。)macOS Aquaガイドラインに基づくスタイルです。ラベルは右揃えで、フィールドはサイズヒントを超えて拡大せず、フォームは水平方向に中央揃えになります。KDEアプリケーションに推奨されるスタイルです。MacStyleと似ていますが、フォームが左揃えになり、すべてのフィールドが利用可能なスペースいっぱいに広がる点が異なります。Qt Extended スタイルのデフォルトスタイルです。ラベルは右揃えで、拡張可能なフィールドは利用可能なスペースいっぱいに広がり、長い行に対しては行の折り返しが有効になります。

フォームのスタイルは、setLabelAlignment()、setFormAlignment()、setFieldGrowthPolicy()、およびsetRowWrapPolicy() を呼び出すことで、個別に上書きすることもできます。たとえば、すべてのプラットフォームで QMacStyle のフォームレイアウトの外観を再現しつつ、ラベルを左揃えにするには、次のように記述します。

formLayout->setRowWrapPolicy(QFormLayout::DontWrapRows);
formLayout->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint);
formLayout->setFormAlignment(Qt::AlignHCenter | Qt::AlignTop);
formLayout->setLabelAlignment(Qt::AlignLeft);

QGridLayout 、QBoxLayout 、およびQStackedLayoutも参照してください 。

メンバ型のドキュメント

enum QFormLayout::FieldGrowthPolicy

この列挙型は、フォームのフィールドが拡張される方法を制御するために使用できるさまざまなポリシーを指定します。

定数値説明
QFormLayout::FieldsStayAtSizeHint0フィールドは、effective size hint を超えることは決してありません。これは QMacStyle のデフォルト設定です。
QFormLayout::ExpandingFieldsGrow1水平方向のsize policy がExpanding またはMinimumExpanding であるフィールドは、利用可能なスペースを埋めるように拡大します。その他のフィールドは、有効なサイズヒントを超えて拡大することはありません。これは、Plastiqueのデフォルトのポリシーです。
QFormLayout::AllNonFixedFieldsGrow2拡大が許可されているサイズポリシーを持つすべてのフィールドは、利用可能なスペースを埋めるまで拡大します。これは、ほとんどのスタイルにおけるデフォルトのポリシーです。

fieldGrowthPolicyも参照してください 。

enum QFormLayout::ItemRole

この列挙型は、行内に表示される可能性のあるウィジェット(またはその他のレイアウト項目)の種類を指定します。

定数値説明
QFormLayout::LabelRole0ラベルウィジェット。
QFormLayout::FieldRole1フィールドウィジェット。
QFormLayout::SpanningRole2ラベル列とフィールド列にまたがるウィジェット。

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

enum QFormLayout::RowWrapPolicy

この列挙型は、フォームの行の折り返し方法を制御するために使用できるさまざまなポリシーを指定します。

定数値説明
QFormLayout::DontWrapRows0フィールドは常にそのラベルの隣に配置されます。これは、Qt Extended スタイルを除くすべてのスタイルのデフォルトのポリシーです。
QFormLayout::WrapLongRows1ラベルには、最も幅の広いラベルが収まるだけの十分な水平スペースが割り当てられ、残りのスペースはフィールドに割り当てられます。フィールドペアの最小サイズが利用可能なスペースの幅よりも広い場合、フィールドは次の行に折り返されます。これは、Qt Extended スタイルのデフォルトのポリシーです。
QFormLayout::WrapAllRows2フィールドは常にラベルの下に配置されます。

関連項目: rowWrapPolicy 。

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

fieldGrowthPolicy : FieldGrowthPolicy

このプロパティは、フォームのフィールドが拡大する方法を指定します

デフォルト値は、ウィジェットまたはアプリケーションのスタイルによって異なります。QMacStyle の場合、デフォルトは `FieldsStayAtSizeHint` です。QCommonStyle から派生したスタイル(Plastique や Windows など)の場合、デフォルトは `ExpandingFieldsGrow` です。Qt Extended スタイルの場合、デフォルトは `AllNonFixedFieldsGrow` です。

どのフィールドも拡張できず、フォームのサイズが変更された場合、余分なスペースは現在のform alignment に従って配分されます。

アクセス関数:

QFormLayout::FieldGrowthPolicy fieldGrowthPolicy() const
void setFieldGrowthPolicy(QFormLayout::FieldGrowthPolicy policy)

formAlignment およびrowWrapPolicyも参照してください 。

formAlignment : Qt::Alignment

このプロパティは、フォームレイアウトのジオメトリ内におけるコンテンツの配置を指定します

デフォルト値は、ウィジェットまたはアプリケーションのスタイルによって異なります。QMacStyle の場合、デフォルトは `Qt::AlignHCenter ` | `Qt::AlignTop` です。その他のスタイルの場合、デフォルトは `Qt::AlignLeft ` | `Qt::AlignTop` です。

アクセス関数:

Qt::Alignment formAlignment() const
void setFormAlignment(Qt::Alignment alignment)

labelAlignment およびrowWrapPolicyも参照してください 。

horizontalSpacing : int

このプロパティは、並べて配置されたウィジェット間の間隔を指定します

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

アクセス関数:

int horizontalSpacing() const
void setHorizontalSpacing(int spacing)

関連項目: verticalSpacing 、QStyle::pixelMetric()、およびPM_LayoutHorizontalSpacing 。

labelAlignment : Qt::Alignment

このプロパティは、ラベルの水平方向の位置合わせを指定します

デフォルト値は、ウィジェットまたはアプリケーションのスタイルによって異なります。QCommonStyle から派生したスタイル(QPlastiqueStyleを除く)の場合、デフォルトはQt::AlignLeft です。その他のスタイルの場合、デフォルトはQt::AlignRight です。

アクセス関数:

Qt::Alignment labelAlignment() const
void setLabelAlignment(Qt::Alignment alignment)

関連項目: formAlignment 。

rowWrapPolicy : RowWrapPolicy

このプロパティは、フォームの行の折り返し方法を指定します

デフォルト値は、ウィジェットまたはアプリケーションのスタイルによって異なります。Qt Extended スタイルの場合、デフォルトは `WrapLongRows` です。その他のスタイルの場合、デフォルトは `DontWrapRows` です。

各ラベルを、対応するフィールドの横ではなく、その上に表示したい場合は、このプロパティをWrapAllRows に設定してください。

アクセス関数:

QFormLayout::RowWrapPolicy rowWrapPolicy() const
void setRowWrapPolicy(QFormLayout::RowWrapPolicy policy)

「fieldGrowthPolicy」も参照してください 。

verticalSpacing : int

このプロパティは、垂直方向に配置されたウィジェット間の間隔を指定します

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

アクセス関数:

int verticalSpacing() const
void setVerticalSpacing(int spacing)

関連項目: horizontalSpacing 、QStyle::pixelMetric()、およびPM_LayoutHorizontalSpacing 。

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

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

指定されたparent ウィジェットを使用して、新しいフォームレイアウトを構築します。

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

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

[virtual noexcept] QFormLayout::~QFormLayout()

フォームのレイアウトを破壊します。

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

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

void QFormLayout::addRow(QWidget *label, QWidget *field)

このフォームレイアウトの最下部に、指定されたlabel およびfield を持つ新しい行を追加します。

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

void QFormLayout::addRow(QLayout *layout)

指定されたlayout を、このフォームレイアウトの最後に追加します。layout は両方の列にまたがります。

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

void QFormLayout::addRow(QWidget *widget)

指定されたwidget を、このフォームレイアウトの最後に追加します。widget は両方の列にまたがります。

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

void QFormLayout::addRow(QWidget *label, QLayout *field)

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

void QFormLayout::addRow(const QString &labelText, QLayout *field)

このオーバーロードは、内部で自動的にQLabel を生成し、そのテキストとしてlabelText を設定します。

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

void QFormLayout::addRow(const QString &labelText, QWidget *field)

このオーバーロードは、内部で自動的にテキストが「labelText 」であるQLabel を作成します。field は、新しいQLabel のbuddy として設定されます。

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

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

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

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

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

void QFormLayout::getItemPosition(int index, int *rowPtr, QFormLayout::ItemRole *rolePtr) const

指定されたindex にある項目の行番号とロール(列)を取得します。index が範囲外の場合、*rowPtr には-1が設定されます。それ以外の場合は、行番号が*rowPtr に、ロールが*rolePtr に格納されます。

itemAt()、count()、getLayoutPosition()、およびgetWidgetPosition()も参照してください 。

void QFormLayout::getLayoutPosition(QLayout *layout, int *rowPtr, QFormLayout::ItemRole *rolePtr) const

指定された子要素 `layout` の行とロール(列)を取得します。`layout ` がフォームレイアウトに含まれていない場合、`*rowPtr ` には -1 が設定されます。それ以外の場合は、行が `*rowPtr ` に、ロールが `*rolePtr` に格納されます。

void QFormLayout::getWidgetPosition(QWidget *widget, int *rowPtr, QFormLayout::ItemRole *rolePtr) const

レイアウト内の指定されたwidget の行とロール(列)を取得します。widget がレイアウト内に存在しない場合、*rowPtr には-1が設定されます。それ以外の場合は、行が*rowPtr に、ロールが*rolePtr に格納されます。

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

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

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

[override virtual] int QFormLayout::heightForWidth(int width) const

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

void QFormLayout::insertRow(int row, QWidget *label, QWidget *field)

このフォームレイアウトのrow の位置に、指定されたlabel およびfield を用いて新しい行を挿入します。row が範囲外の場合、新しい行は末尾に追加されます。

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

void QFormLayout::insertRow(int row, QLayout *layout)

このフォームレイアウトのrow の位置に、指定されたlayout を挿入します。layout は両方の列にまたがります。row が範囲外の場合、ウィジェットは末尾に追加されます。

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

void QFormLayout::insertRow(int row, QWidget *widget)

このフォームレイアウトのrow の位置に、指定されたwidget を挿入します。widget は両方の列にまたがります。row が範囲外の場合、ウィジェットは末尾に追加されます。

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

void QFormLayout::insertRow(int row, QWidget *label, QLayout *field)

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

void QFormLayout::insertRow(int row, const QString &labelText, QLayout *field)

このオーバーロードは、内部で自動的にテキストが「labelText 」であるQLabel を作成します。

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

void QFormLayout::insertRow(int row, const QString &labelText, QWidget *field)

このオーバーロードは、内部で自動的にテキストが「labelText 」であるQLabel を作成します。field は、新しいQLabel のbuddy として設定されます。

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

[override virtual] void QFormLayout::invalidate()

QLayout::invalidate() の再実装です。

[since 6.4] bool QFormLayout::isRowVisible(int row) const

行row 内のいずれかの項目が表示されている場合はtrueを返し、そうでない場合はfalseを返します。

この関数は Qt 6.4 で導入されました。

[since 6.4] bool QFormLayout::isRowVisible(QLayout *layout) const

layout に対応する行内のいずれかのアイテムが表示されている場合は true を返し、そうでない場合は false を返します。

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

この関数は Qt 6.4 で導入されました。

[since 6.4] bool QFormLayout::isRowVisible(QWidget *widget) const

widget に対応する行内のいずれかの項目が表示されている場合は true を返し、そうでない場合は false を返します。

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

この関数は Qt 6.4 で導入されました。

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

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

QLayoutItem *QFormLayout::itemAt(int row, QFormLayout::ItemRole role) const

指定されたrow 内の、指定されたrole (列)に対応するレイアウト項目を返します。該当する項目がない場合は、nullptr を返します。

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

QWidget *QFormLayout::labelForField(QWidget *field) const

指定されたfield に関連付けられたラベルを返します。

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

QWidget *QFormLayout::labelForField(QLayout *field) const

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

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

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

void QFormLayout::removeRow(int row)

このフォームレイアウトから行row を削除します。

row 引数は非負かつrowCount() 未満でなければなりません。

この呼び出し後、rowCount() は 1 減算されます。この行を占有していたすべてのウィジェットおよびネストされたレイアウトが削除されます。これには、フィールドウィジェットおよび(存在する場合)ラベルの両方が含まれます。後続のすべての行は 1 行上にずらされ、解放された垂直方向のスペースは残りの行に再配分されます。

この関数を使用すると、以前に呼び出されたaddRow()やinsertRow()の操作を元に戻すことができます:

QFormLayout *flay = ...;
QPointer<QLineEdit> le = new QLineEdit;
flay->insertRow(2, "User:", le);
// later:
flay->removeRow(2); // le == nullptr at this point

ウィジェットを削除せずにレイアウトから行を削除したい場合は、代わりに `takeRow()` を使用してください。

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

void QFormLayout::removeRow(QLayout *layout)

このフォームレイアウトから、layout に対応する行を削除します。

この呼び出し後、rowCount() の値が 1 減少します。この行を占有していたすべてのウィジェットおよびネストされたレイアウトが削除されます。これには、フィールドウィジェットと、存在する場合のラベルの両方が含まれます。その後のすべての行が 1 行分上にずらされ、解放された垂直方向のスペースは残りの行に再配分されます。

この関数を使用すると、以前に実行された `addRow()` または `insertRow()` を元に戻すことができます:

QFormLayout *flay = ...;
QPointer<QVBoxLayout> vbl = new QVBoxLayout;
flay->insertRow(2, "User:", vbl);
// later:
flay->removeRow(layout); // vbl == nullptr at this point

挿入されたレイアウトを削除せずに、フォームレイアウトから行を削除したい場合は、代わりにtakeRow()を使用してください。

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

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

void QFormLayout::removeRow(QWidget *widget)

このフォームレイアウトから、widget に対応する行を削除します。

この呼び出し後、rowCount() の値が 1 減少します。この行を占めていたすべてのウィジェットおよびネストされたレイアウトが削除されます。これには、フィールドウィジェットおよび(存在する場合)ラベルの両方が含まれます。後続のすべての行が 1 行分上にずらされ、解放された縦方向のスペースは残りの行に再配分されます。

この関数を使用すると、以前に実行された `addRow()` または `insertRow()` の操作を元に戻すことができます:

QFormLayout *flay = ...;
QPointer<QLineEdit> le = new QLineEdit;
flay->insertRow(2, "User:", le);
// later:
flay->removeRow(le); // le == nullptr at this point

ウィジェットを削除せずにレイアウトから行を削除したい場合は、代わりにtakeRow()を使用してください。

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

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

int QFormLayout::rowCount() const

フォーム内の行数を返します。

QLayout::count()も参照してください 。

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

QLayout::setGeometry(const QRect &r) の再実装です。

void QFormLayout::setItem(int row, QFormLayout::ItemRole role, QLayoutItem *item)

指定されたrole に対して、指定されたrow 内の項目をitem に設定し、必要に応じてレイアウトを空の行で拡張します。

セルがすでに使用されている場合、item は挿入されず、コンソールにエラーメッセージが出力されます。item は両方の列にまたがります。

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

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

void QFormLayout::setLayout(int row, QFormLayout::ItemRole role, QLayout *layout)

指定された「row 」内の、指定された「role 」に対するサブレイアウトを「layout 」に設定し、必要に応じてフォームのレイアウトを空の行で拡張します。

セルがすでに使用されている場合、layout は挿入されず、コンソールにエラーメッセージが出力されます。

注:ほとんどのアプリケーションでは、setLayout() の代わりにaddRow() またはinsertRow() を使用する必要があります。

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

[since 6.4] void QFormLayout::setRowVisible(int row, bool on)

on が真の場合、行row を表示し、そうでない場合はその行を非表示にします。

row 値は非負であり、かつrowCount() より小さくなければなりません。

この関数は Qt 6.4 で導入されました。

isRowVisible()、removeRow()、およびtakeRow()も参照してください 。

[since 6.4] void QFormLayout::setRowVisible(QLayout *layout, bool on)

on がtrueの場合、layout に対応する行を表示し、そうでない場合はその行を非表示にします。

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

この関数は Qt 6.4 で導入されました。

removeRow() およびtakeRow()も参照してください 。

[since 6.4] void QFormLayout::setRowVisible(QWidget *widget, bool on)

on がtrueの場合、widget に対応する行を表示し、そうでない場合はその行を非表示にします。

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

この関数は Qt 6.4 で導入されました。

removeRow() およびtakeRow()も参照してください 。

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

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

この関数は、垂直方向および水平方向の間隔の両方を `spacing` に設定します。

spacing()、setVerticalSpacing()、およびsetHorizontalSpacing()も参照してください 。

void QFormLayout::setWidget(int row, QFormLayout::ItemRole role, QWidget *widget)

指定されたrole に対して、指定されたrow 内のウィジェットをwidget に設定し、必要に応じてレイアウトを空の行で拡張します。

セルがすでに占有されている場合、widget は挿入されず、コンソールにエラーメッセージが出力されます。

注:ほとんどのアプリケーションでは、setWidget() の代わりにaddRow() またはinsertRow() を使用する必要があります。

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

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

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

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

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

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

setSpacing()、verticalSpacing()、およびhorizontalSpacing()も参照してください 。

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

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

QFormLayout::TakeRowResult QFormLayout::takeRow(int row)

このフォームレイアウトから、指定されたrow を削除します。

row 値は非負であり、かつrowCount() 未満でなければなりません。

注:この関数は 何も削除しません。

この呼び出し後、rowCount() は 1 減算されます。それ以降のすべての行が 1 行分上にシフトされ、解放された縦方向のスペースは残りの行に再配分されます。

この関数を使用すると、以前に実行された `addRow()` または `insertRow()` を元に戻すことができます。

QFormLayout *flay = ...;
QPointer<QLineEdit> le = new QLineEdit;
flay->insertRow(2, "User:", le);
// later:
QFormLayout::TakeRowResult result = flay->takeRow(2);

レイアウトから行を削除し、ウィジェットも削除したい場合は、代わりに `removeRow()` を使用してください。

ウィジェットとそれに対応するラベルのレイアウト項目の両方を含む構造体を返します

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

QFormLayout::TakeRowResult QFormLayout::takeRow(QLayout *layout)

指定されたlayout をこのフォームレイアウトから削除します。

注:この関数は 何も削除しません。

この呼び出し後、rowCount() の値が 1 減少します。それ以降のすべての行が 1 行分上にずらされ、空いた縦方向のスペースは残りの行に再配分されます。

QFormLayout *flay = ...;
QPointer<QVBoxLayout> vbl = new QVBoxLayout;
flay->insertRow(2, "User:", vbl);
// later:
QFormLayout::TakeRowResult result = flay->takeRow(widget);

フォームレイアウトから行を削除し、挿入されたレイアウトを削除したい場合は、代わりにremoveRow() を使用してください。

戻り値 ウィジェットと対応するラベルのレイアウト項目の両方を含む構造体

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

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

QFormLayout::TakeRowResult QFormLayout::takeRow(QWidget *widget)

指定したwidget をこのフォームレイアウトから削除します。

注:この関数は 何も削除しません。

この呼び出し後、rowCount() の値が 1 減算されます。それ以降のすべての行が 1 行分上にずらされ、解放された縦方向のスペースは残りの行に再配分されます。

QFormLayout *flay = ...;
QPointer<QLineEdit> le = new QLineEdit;
flay->insertRow(2, "User:", le);
// later:
QFormLayout::TakeRowResult result = flay->takeRow(widget);

レイアウトから行を削除し、ウィジェットも削除したい場合は、代わりに `removeRow()` を使用してください。

戻り値:ウィジェットとそれに対応するラベルのレイアウト項目の両方を含む構造体

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

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

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