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`은 다음과 같은 이점을 제공하는 더 높은 수준의 대안입니다:
- 각 플랫폼별 룩앤필(Look and Feel) 지침을 준수합니다.
예를 들어, 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 인 필드는 사용 가능한 공간을 채우도록 확장됩니다. 그 외의 필드는 유효 크기 힌트(effective size hint)를 초과하여 확장되지 않습니다. 이는 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
이 속성은 레이블의 수평 정렬을 지정합니다.
기본값은 위젯 또는 애플리케이션 스타일에 따라 다릅니다. 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) |
horizontalSpacing, QStyle::pixelMetric(), PM_LayoutHorizontalSpacing도 참조하십시오 .
멤버 함수 문서
[explicit] QFormLayout::QFormLayout(QWidget *parent = nullptr)
지정된 ` parent ` 위젯을 사용하여 새로운 폼 레이아웃을 생성합니다.
이 레이아웃은 ` parent`의 최상위 레이아웃으로 직접 설정됩니다. 위젯당 최상위 레이아웃은 하나만 가질 수 있습니다. 이 레이아웃은 ` 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)
이 오버로드는 내부적으로 텍스트가 “ labelText ”인 QLabel 을 자동으로 생성합니다.
이는 오버로드된 함수입니다.
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)
지정된 ` layout `를 이 양식 레이아웃의 ` row ` 위치에 삽입합니다. ` layout `는 두 열에 걸쳐 표시됩니다. ` row `가 허용 범위를 벗어날 경우, 위젯은 끝 부분에 추가됩니다.
이 함수는 오버로드된 함수입니다.
void QFormLayout::insertRow(int row, QWidget *widget)
지정된 ` widget `를 이 양식 레이아웃의 ` row ` 위치에 삽입합니다. ` 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 값은 0 이상이어야 하며 rowCount()보다 작아야 합니다.
이 호출 후, rowCount() 값은 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 감소합니다. 이 행을 차지하고 있던 모든 위젯과 중첩된 레이아웃이 삭제됩니다. 여기에는 필드 위젯과 (있는 경우) 레이블이 모두 포함됩니다. 뒤따르는 모든 행은 한 행씩 위로 이동하며, 확보된 수직 공간은 나머지 행들 사이에 재분배됩니다.
이 함수를 사용하여 이전에 호출된 ` 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 감소합니다. 이 행을 차지하고 있던 모든 위젯과 중첩된 레이아웃이 삭제됩니다. 여기에는 필드 위젯과 레이블(있는 경우)이 모두 포함됩니다. 뒤따르는 모든 행은 한 행씩 위로 이동하며, 확보된 수직 공간은 나머지 행들 사이에 재분배됩니다.
이 함수를 사용하여 이전에 호출된 ` 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)
지정된 role 에 대해, 지정된 row 내의 하위 레이아웃을 layout 로 설정하며, 필요한 경우 빈 행을 추가하여 양식 레이아웃을 확장합니다.
셀이 이미 채워져 있는 경우, ` layout `은 삽입되지 않으며 콘솔에 오류 메시지가 전송됩니다.
참고: 대부분의 애플리케이션에서는 setLayout() 대신 addRow() 또는 insertRow()를 사용해야 합니다.
setWidget()도 참조하십시오 .
[since 6.4] void QFormLayout::setRowVisible(int row, bool on)
on 가 참이면 row 행을 표시하고, 그렇지 않으면 해당 행을 숨깁니다.
row 값은 0 이상이어야 하며 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 값은 0 이상이어야 하며 rowCount()보다 작아야 합니다.
참고: 이 함수는 어떤 항목도 삭제하지 않습니다.
이 함수가 호출된 후, rowCount() 값이 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 감소합니다. 그 뒤의 모든 행이 한 행씩 위로 이동하며, 확보된 수직 공간은 나머지 행들 사이에 재분배됩니다.
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 감소합니다. 그 뒤의 모든 행이 한 행씩 위로 이동하며, 확보된 세로 공간은 나머지 행들 사이에 재분배됩니다.
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.



