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。

    QStringQWidget * を受け取る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 拡張スタイル
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);

QGridLayoutQBoxLayoutQStackedLayoutも参照のこと

メンバ型ドキュメント

enum QFormLayout::FieldGrowthPolicy

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

定数説明
QFormLayout::FieldsStayAtSizeHint0effective size hintこれはQMacStyleのデフォルトです。
QFormLayout::ExpandingFieldsGrow1size policy Expanding 、 の横幅を持つフィールドは、利用可能なスペースを埋めるように成長します。他のフィールドは有効サイズのヒントを超えて大きくなることはありません。これはPlastiqueのデフォルト・ポリシーです。MinimumExpanding
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)

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

labelAlignment : Qt::Alignment

このプロパティは、ラベルの水平アライメントを保持する。

デフォルト値は、ウィジェットまたはアプリケーション・スタイルに依存する。QPlastiqueStyle を除くQCommonStyle 派生スタイルでは、デフォルトは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)

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

メンバ関数ドキュメント

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

与えられたparent ウィジェットで新しいフォームレイアウトを構築します。

レイアウトはparent のトップレベルレイアウトとして直接設定されます。1つのウィジェットのトップ・レベル・レイアウトは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)

このフォームレイアウトの一番下に、与えられたlabelfield で新しい行を追加します。

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)

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

このオーバーロードは、labelText をテキストとするQLabel を裏で自動的に作成します。

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

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

このオーバーロードは、labelText をテキストとするQLabel を舞台裏で自動的に作成する。field は、新しいQLabelbuddy として設定されます。

[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 に、与えられたlabelfield で新しい行を挿入します。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 は、新しいQLabelbuddy として設定されます。

[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

指定されたrole (column) を持つ、指定されたrow 内のレイアウト項目を返します。そのような項目がない場合は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)

与えられたrole に対する与えられたrow のサブレイアウトを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 が真の場合、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()も参照してください

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