이 페이지에서

QGridLayout Class

QGridLayout 클래스는 위젯을 격자 형태로 배치합니다. 더 보기...

헤더: #include <QGridLayout>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
상속: QLayout

속성

공개 함수

QGridLayout(QWidget *parent = nullptr)
virtual ~QGridLayout()
void addItem(QLayoutItem *item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = Qt::Alignment())
void addLayout(QLayout *layout, int row, int column, Qt::Alignment alignment = Qt::Alignment())
void addLayout(QLayout *layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
void addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment())
void addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
QRect cellRect(int row, int column) const
int columnCount() const
int columnMinimumWidth(int column) const
int columnStretch(int column) const
void getItemPosition(int index, int *row, int *column, int *rowSpan, int *columnSpan) const
int horizontalSpacing() const
QLayoutItem *itemAtPosition(int row, int column) const
Qt::Corner originCorner() const
int rowCount() const
int rowMinimumHeight(int row) const
int rowStretch(int row) const
void setColumnMinimumWidth(int column, int minSize)
void setColumnStretch(int column, int stretch)
void setHorizontalSpacing(int spacing)
void setOriginCorner(Qt::Corner corner)
void setRowMinimumHeight(int row, int minSize)
void setRowStretch(int row, int stretch)
void setVerticalSpacing(int spacing)
int verticalSpacing() const

재구현된 공용 함수

virtual int count() const override
virtual Qt::Orientations expandingDirections() const override
virtual bool hasHeightForWidth() const override
virtual int heightForWidth(int w) const override
virtual void invalidate() override
virtual QLayoutItem *itemAt(int index) const override
virtual QSize maximumSize() const override
virtual int minimumHeightForWidth(int w) 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

재구현된 보호 함수

virtual void addItem(QLayoutItem *item) override

상세 설명

QGridLayout은 (상위 레이아웃이나 parentWidget()에 의해) 할당된 공간을 받아 이를 행과 열로 나누고, 관리하는 각 위젯을 올바른 셀에 배치합니다.

열과 행은 동일하게 동작합니다. 여기서는 열에 대해 설명하겠지만, 행에 대해서도 이에 상응하는 함수가 있습니다.

각 열에는 최소 너비와 확장 계수가 있습니다. 최소 너비는 setColumnMinimumWidth()를 사용하여 설정된 값과 해당 열에 있는 각 위젯의 최소 너비 중 더 큰 값입니다. 확장 계수는 setColumnStretch()를 사용하여 설정되며, 필요한 최소 너비 이상으로 열이 사용할 수 있는 공간의 양을 결정합니다.

일반적으로 각 관리되는 위젯이나 레이아웃은 addWidget()를 사용하여 자체 셀에 배치됩니다. 또한 addItem() 및 addWidget()의 행 및 열 스패닝 오버로드를 사용하여 위젯이 여러 셀을 차지하도록 할 수도 있습니다. 이렇게 하면 QGridLayout이 (스트레치 계수를 기반으로) 열/행에 크기를 어떻게 분배할지 자동으로 판단합니다.

레이아웃에서 위젯을 제거하려면 removeWidget()을 호출하십시오. 위젯에 대해 QWidget::hide()을 호출하는 것도 QWidget::show()이 호출될 때까지 해당 위젯을 레이아웃에서 효과적으로 제거하는 효과가 있습니다.

이 그림은 5열 3행 그리드가 적용된 대화 상자의 일부를 보여줍니다(그리드는 마젠타색으로 중첩되어 표시됨):

그리드 레이아웃

이 대화 상자 조각의 0, 2, 4번 열은 각각 QLabel, QLineEdit, QListBox로 구성되어 있습니다. 1, 3번 열은 setColumnMinimumWidth()로 생성된 자리 표시자입니다. 0번 행은 QLabel 객체 3개로, 1번 행은 QLineEdit 객체 3개로, 2번 행은 QListBox 객체 3개로 구성되어 있습니다. 열 사이의 간격을 적절하게 조정하기 위해 자리 표시자 열(1번과 3번)을 사용했습니다.

열과 행의 너비나 높이가 모두 같지 않다는 점에 유의하십시오. 두 열의 너비를 동일하게 만들려면 최소 너비와 확장 계수를 직접 동일하게 설정해야 합니다. 이를 위해 setColumnMinimumWidth() 및 setColumnStretch() 메서드를 사용합니다.

QGridLayout이 최상위 레이아웃이 아닌 경우(즉, 위젯의 전체 영역과 자식 요소를 모두 관리하지 않는 경우), 이를 생성할 때(하지만 어떤 작업도 수행하기 전에) 부모 레이아웃에 추가해야 합니다. 레이아웃을 추가하는 일반적인 방법은 부모 레이아웃에서 addLayout()을 호출하는 것입니다.

레이아웃을 추가한 후에는 addWidget(), addItem(), addLayout()을 사용하여 그리드 레이아웃의 셀에 위젯 및 다른 레이아웃을 배치할 수 있습니다.

QGridLayout에는 contents margin 와 spacing()라는 두 가지 여백 너비가 있습니다. contents margin은 QGridLayout의 네 변을 따라 예약된 공간의 너비입니다. spacing()은 인접한 박스 사이에 자동으로 할당되는 간격의 너비입니다.

기본 콘텐츠 여백 값은 style 에 의해 제공됩니다. Qt 스타일이 지정하는 기본값은 자식 위젯의 경우 9, 창의 경우 11입니다. 간격은 최상위 레이아웃의 여백 너비와 동일하거나, 부모 레이아웃의 여백 너비와 동일하게 기본 설정됩니다.

QBoxLayout, QStackedLayout, 레이아웃 관리 및 기본 레이아웃 예제도참조하십시오 .

속성 설명서

horizontalSpacing : int

이 속성은 나란히 배치된 위젯들 사이의 간격을 지정합니다.

값이 명시적으로 설정되지 않은 경우, 레이아웃의 수평 간격은 상위 레이아웃이나 상위 위젯의 스타일 설정에서 상속됩니다.

액세스 함수:

int horizontalSpacing() const
void setHorizontalSpacing(int spacing)

verticalSpacing, QStyle::pixelMetric(), PM_LayoutHorizontalSpacing도 참조하십시오 .

verticalSpacing : int

이 속성은 서로 겹쳐 배치된 위젯들 사이의 간격을 지정합니다.

값이 명시적으로 설정되지 않은 경우, 레이아웃의 수직 간격은 상위 레이아웃이나 상위 위젯의 스타일 설정에서 상속됩니다.

액세스 함수:

int verticalSpacing() const
void setVerticalSpacing(int spacing)

horizontalSpacing, QStyle::pixelMetric() 및 PM_LayoutHorizontalSpacing도 참조하십시오 .

멤버 함수 문서

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

부모 위젯인 ` parent`을 사용하여 새로운 `QGridLayout`을 생성합니다. 이 레이아웃은 처음에 행 하나와 열 하나로 구성되며, 새로운 항목이 삽입되면 확장됩니다.

이 레이아웃은 ` parent`의 최상위 레이아웃으로 직접 설정됩니다. 위젯당 최상위 레이아웃은 하나만 가질 수 있습니다. 이는 ` QWidget::layout()` 메서드에 의해 반환됩니다.

parent 가 nullptr 인 경우, 이 그리드 레이아웃을 다른 레이아웃에 삽입하거나 QWidget::setLayout()를 사용하여 위젯의 레이아웃으로 설정해야 합니다.

QWidget::setLayout()도 참조하십시오 .

[virtual noexcept] QGridLayout::~QGridLayout()

그리드 레이아웃을 제거합니다. 이 그리드가 최상위 그리드인 경우, 기하 구조 관리가 종료됩니다.

레이아웃의 위젯은 파괴되지 않습니다.

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

QLayout::addItem(QLayoutItem *item)을 재구현합니다.

void QGridLayout::addItem(QLayoutItem *item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = Qt::Alignment())

row, column 위치에 item 를 추가하며, rowSpan 행과 columnSpan 열을 차지하고, alignment 에 따라 정렬합니다. rowSpan 및/또는 columnSpan 가 -1인 경우, 해당 항목은 각각 하단 및/또는 오른쪽 가장자리까지 확장됩니다. 이 레이아웃은 item 의 소유권을 갖습니다.

경고: 이 함수를 사용하여 자식 레이아웃이나 자식 위젯 항목을 추가하지마십시오 . 대신 addLayout() 또는 addWidget()을 사용하십시오.

void QGridLayout::addLayout(QLayout *layout, int row, int column, Qt::Alignment alignment = Qt::Alignment())

layout 을 그리드의 (row, column) 위치에 배치합니다. 왼쪽 상단 위치는 (0, 0)입니다.

정렬 방식은 alignment 로 지정됩니다. 기본 정렬 값은 0이며, 이는 위젯이 셀 전체를 채운다는 것을 의미합니다.

0이 아닌 정렬 값은 레이아웃이 사용 가능한 공간을 채우기 위해 확장되어서는 안 되며, sizeHint()에 따라 크기가 조정되어야 함을 나타냅니다.

layout 는 그리드 레이아웃의 자식이 됩니다.

void QGridLayout::addLayout(QLayout *layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())

이 버전에서는 셀 그리드에 여러 행/열에 걸쳐 배치되는 ‘ layout ’ 레이아웃이 추가되었습니다. 해당 셀은 row, column 에서 시작하여 rowSpan 행과 columnSpan 열에 걸쳐 배치됩니다.

rowSpan 및/또는 columnSpan 가 -1인 경우, 레이아웃은 각각 하단 및/또는 오른쪽 가장자리까지 확장됩니다.

이 함수는 오버로드된 함수입니다.

void QGridLayout::addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment())

지정된 widget 를 row, column 의 셀 그리드에 추가합니다. 기본적으로 왼쪽 상단 위치는 (0, 0)입니다.

정렬 방식은 alignment 로 지정됩니다. 기본 정렬 값은 0이며, 이는 위젯이 셀 전체를 채운다는 것을 의미합니다.

void QGridLayout::addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())

이 버전은 지정된 widget 를 셀 그리드에 추가하여 여러 행/열에 걸쳐 배치합니다. 셀은 fromRow, fromColumn 에서 시작하여 rowSpan 행과 columnSpan 열에 걸쳐 배치됩니다. widget 에는 지정된 alignment 가 적용됩니다.

rowSpan 및/또는 columnSpan 가 -1인 경우, 위젯은 각각 하단 및/또는 오른쪽 가장자리까지 확장됩니다.

이 함수는 오버로드된 함수입니다.

QRect QGridLayout::cellRect(int row, int column) const

그리드에서 행 row 및 열 column 에 위치한 셀의 기하 정보를 반환합니다. row 또는 column 이 그리드 범위를 벗어날 경우 유효하지 않은 사각형을 반환합니다.

경고: 현재버전의 Qt에서는 setGeometry()이 호출되기 전, 즉 parentWidget()이 표시된 이후가 되어야만 이 함수가 유효한 결과를 반환합니다.

int QGridLayout::columnCount() const

이 그리드의 열 수를 반환합니다.

int QGridLayout::columnMinimumWidth(int column) const

column 열의 열 간격을 반환합니다.

setColumnMinimumWidth()도 참조하십시오 .

int QGridLayout::columnStretch(int column) const

column 열의 신축 계수를 반환합니다.

setColumnStretch()도 참조하십시오 .

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

QLayout::count() const를 재구현합니다.

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

QLayout::expandingDirections() const를 재구현합니다.

void QGridLayout::getItemPosition(int index, int *row, int *column, int *rowSpan, int *columnSpan) const

지정된 ` index`에 해당하는 항목의 위치 정보를 반환합니다.

row 및 column 로 전달된 변수에는 레이아웃 내 항목의 위치가 반영되며, rowSpan 및 columnSpan 변수에는 항목의 세로 및 가로 길이가 반영됩니다.

itemAtPosition() 및 itemAt()도 참조하십시오 .

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

QLayoutItem::hasHeightForWidth() const를 재구현합니다.

[override virtual] int QGridLayout::heightForWidth(int w) const

QLayoutItem::heightForWidth(int) const를 재구현합니다.

[override virtual] void QGridLayout::invalidate()

QLayout::invalidate()를 재구현합니다.

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

QLayout::itemAt(int index) const를 재구현합니다.

QLayoutItem *QGridLayout::itemAtPosition(int row, int column) const

(row, column) 셀을 차지하는 레이아웃 항목을 반환하며, 셀이 비어 있는 경우에는 nullptr 를 반환합니다.

getItemPosition() 및 indexOf()도 참조하십시오 .

[override virtual] QSize QGridLayout::maximumSize() const

QLayout::maximumSize() const를 재구현합니다.

[override virtual] int QGridLayout::minimumHeightForWidth(int w) const

QLayoutItem::minimumHeightForWidth(int w) const를 재구현합니다.

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

QLayout::minimumSize() const를 재구현합니다.

Qt::Corner QGridLayout::originCorner() const

그리드의 원점, 즉 (0, 0) 위치에 해당하는 모서리를 반환합니다.

setOriginCorner()도 참조하십시오 .

int QGridLayout::rowCount() const

이 그리드의 행 수를 반환합니다.

int QGridLayout::rowMinimumHeight(int row) const

row 행에 설정된 최소 너비를 반환합니다.

setRowMinimumHeight()도 참조하십시오 .

int QGridLayout::rowStretch(int row) const

row 행에 대한 신축 계수를 반환합니다.

setRowStretch()도 참조하십시오 .

void QGridLayout::setColumnMinimumWidth(int column, int minSize)

column 열의 최소 너비를 minSize 픽셀로 설정합니다.

columnMinimumWidth() 및 setRowMinimumHeight()도 참조하십시오 .

void QGridLayout::setColumnStretch(int column, int stretch)

column 열의 확장 계수를 stretch 로 설정합니다. 첫 번째 열은 번호 0입니다.

확장 계수는 이 그리드 내의 다른 열을 기준으로 합니다. 확장 계수가 더 높은 열일수록 사용 가능한 공간을 더 많이 차지합니다.

기본 스트레치 계수는 0입니다. 스트레치 계수가 0이고 이 테이블의 다른 열이 전혀 확장될 수 없는 경우에도, 해당 열은 여전히 확장될 수 있습니다.

다른 방법으로는 ` addItem()` 함수를 사용하여 ` QSpacerItem`를 지정해 간격을 추가하는 것입니다.

columnStretch() 및 setRowStretch()도 참조하십시오 .

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

QLayout::setGeometry(const QRect &r)를 재구현합니다.

void QGridLayout::setOriginCorner(Qt::Corner corner)

그리드의 원점 모서리, 즉 (0, 0) 위치를 corner 로 설정합니다.

originCorner()도 참조하십시오 .

void QGridLayout::setRowMinimumHeight(int row, int minSize)

row 행의 최소 높이를 minSize 픽셀로 설정합니다.

rowMinimumHeight() 및 setColumnMinimumWidth()도 참조하십시오 .

void QGridLayout::setRowStretch(int row, int stretch)

row 행의 신축 계수를 stretch 로 설정합니다. 첫 번째 행은 0번입니다.

확장 계수는 이 그리드 내의 다른 행들에 상대적입니다. 확장 계수가 더 높은 행일수록 사용 가능한 공간을 더 많이 차지합니다.

기본 스트레치 계수는 0입니다. 스트레치 계수가 0이고 이 테이블의 다른 행이 전혀 확장될 수 없는 경우에도, 해당 행은 여전히 확장될 수 있습니다.

rowStretch(), setRowMinimumHeight(), setColumnStretch()도 참조하십시오 .

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

QLayout::spacing 속성에 대한 액세스 함수를 재구현합니다.

이 함수는 수직 및 수평 간격을 모두 spacing 로 설정합니다.

spacing(), setVerticalSpacing() 및 setHorizontalSpacing()도 참조하십시오 .

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

QLayoutItem::sizeHint() const를 재구현합니다.

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

QLayout::spacing 속성에 대한 액세스 함수를 재구현합니다.

수직 간격이 수평 간격과 같으면 이 함수는 해당 값을 반환하고, 그렇지 않으면 -1을 반환합니다.

setSpacing(), verticalSpacing(), horizontalSpacing()도 참조하십시오 .

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

QLayout::takeAt(int index)를 재구현합니다.

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