QFormLayout Class

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

Header: #include <QFormLayout>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Inherits: 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 に対応する行の項目が表示されている場合は真を返し、そうでない場合は偽を返します。

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

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

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

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

この関数は 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 (列)に対応する、指定された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 が true の場合は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 が真であれば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()も参照してください

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