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を除く) | QMacStyle | QPlastiqueStyle | Qt拡張スタイル |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
| 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::FieldsStayAtSizeHint | 0 | フィールドは、effective size hint を超えることは決してありません。これは QMacStyle のデフォルト設定です。 |
QFormLayout::ExpandingFieldsGrow | 1 | 水平方向のsize policy がExpanding またはMinimumExpanding であるフィールドは、利用可能なスペースを埋めるように拡大します。その他のフィールドは、有効なサイズヒントを超えて拡大することはありません。これは、Plastiqueのデフォルトのポリシーです。 |
QFormLayout::AllNonFixedFieldsGrow | 2 | 拡大が許可されているサイズポリシーを持つすべてのフィールドは、利用可能なスペースを埋めるまで拡大します。これは、ほとんどのスタイルにおけるデフォルトのポリシーです。 |
fieldGrowthPolicyも参照してください 。
enum QFormLayout::ItemRole
この列挙型は、行内に表示される可能性のあるウィジェット(またはその他のレイアウト項目)の種類を指定します。
| 定数 | 値 | 説明 |
|---|---|---|
QFormLayout::LabelRole | 0 | ラベルウィジェット。 |
QFormLayout::FieldRole | 1 | フィールドウィジェット。 |
QFormLayout::SpanningRole | 2 | ラベル列とフィールド列にまたがるウィジェット。 |
itemAt() およびgetItemPosition()も参照してください 。
enum QFormLayout::RowWrapPolicy
この列挙型は、フォームの行の折り返し方法を制御するために使用できるさまざまなポリシーを指定します。
| 定数 | 値 | 説明 |
|---|---|---|
QFormLayout::DontWrapRows | 0 | フィールドは常にそのラベルの隣に配置されます。これは、Qt Extended スタイルを除くすべてのスタイルのデフォルトのポリシーです。 |
QFormLayout::WrapLongRows | 1 | ラベルには、最も幅の広いラベルが収まるだけの十分な水平スペースが割り当てられ、残りのスペースはフィールドに割り当てられます。フィールドペアの最小サイズが利用可能なスペースの幅よりも広い場合、フィールドは次の行に折り返されます。これは、Qt Extended スタイルのデフォルトのポリシーです。 |
QFormLayout::WrapAllRows | 2 | フィールドは常にラベルの下に配置されます。 |
関連項目: 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()も参照してください 。
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.



