QSizePolicy Class
QSizePolicy 클래스는 가로 및 세로 크기 조정 정책을 설명하는 레이아웃 속성입니다. 더 보기...
| 헤더: | #include <QSizePolicy> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
공개 유형
| enum | ControlType { DefaultType, ButtonBox, CheckBox, ComboBox, Frame, …, ToolButton } |
| flags | ControlTypes |
| enum | Policy { Fixed, Minimum, Maximum, Preferred, Expanding, …, Ignored } |
| enum | PolicyFlag { GrowFlag, ExpandFlag, ShrinkFlag, IgnoreFlag } |
공개 함수
| QSizePolicy() | |
| QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical, QSizePolicy::ControlType type = DefaultType) | |
| QSizePolicy::ControlType | controlType() const |
| Qt::Orientations | expandingDirections() const |
| bool | hasHeightForWidth() const |
| bool | hasWidthForHeight() const |
| QSizePolicy::Policy | horizontalPolicy() const |
| int | horizontalStretch() const |
| bool | retainSizeWhenHidden() const |
| void | setControlType(QSizePolicy::ControlType type) |
| void | setHeightForWidth(bool dependent) |
| void | setHorizontalPolicy(QSizePolicy::Policy policy) |
| void | setHorizontalStretch(int stretchFactor) |
| void | setRetainSizeWhenHidden(bool retainSize) |
| void | setVerticalPolicy(QSizePolicy::Policy policy) |
| void | setVerticalStretch(int stretchFactor) |
| void | setWidthForHeight(bool dependent) |
| void | transpose() |
| QSizePolicy | transposed() const |
| QSizePolicy::Policy | verticalPolicy() const |
| int | verticalStretch() const |
| operator QVariant() const | |
| bool | operator!=(const QSizePolicy &other) const |
| bool | operator==(const QSizePolicy &other) const |
관련 비멤버
| size_t | qHash(QSizePolicy key, size_t seed = 0) |
| QDataStream & | operator<<(QDataStream &stream, const QSizePolicy &policy) |
| QDataStream & | operator>>(QDataStream &stream, QSizePolicy &policy) |
상세 설명
위젯의 크기 정책은 다양한 방식으로 크기가 조정될 수 있는 정도를 나타내며, 레이아웃 엔진이 위젯을 처리하는 방식에 영향을 미칩니다. 각 위젯은 레이아웃이 적용될 때 선호하는 가로 및 세로 크기 조정 정책을 설명하는 QSizePolicy를 반환합니다. 특정 위젯의 QWidget::sizePolicy 속성을 변경하여 이 정책을 수정할 수 있습니다.
QSizePolicy는 두 개의 독립적인 QSizePolicy::Policy 값과 두 개의 신축 계수를 포함합니다. 하나는 위젯의 가로 크기 정책을, 다른 하나는 세로 크기 정책을 설명합니다. 또한 선호하는 크기의 높이와 너비가 서로 관련되어 있는지 여부를 나타내는 플래그도 포함합니다.
수평 및 수직 정책은 생성자에서 설정할 수 있으며, ` setHorizontalPolicy()` 및 ` setVerticalPolicy()` 함수를 사용하여 변경할 수 있습니다. 신축 계수는 ` setHorizontalStretch()` 및 ` setVerticalStretch()` 함수를 사용하여 설정할 수 있습니다. 위젯의 ` sizeHint()`가 너비에 따라 달라지는지(예: 메뉴 바 또는 줄바꿈이 적용되는 레이블) 여부를 나타내는 플래그는 ` setHeightForWidth()` 함수를 사용하여 설정할 수 있습니다.
현재의 크기 정책과 신축 계수는 horizontalPolicy(), verticalPolicy(), horizontalStretch() 및 verticalStretch() 함수를 사용하여 조회할 수 있습니다. 또는 transpose() 함수를 사용하여 가로 및 세로 정책과 신축 계수를 서로 바꿀 수 있습니다. hasHeightForWidth() 함수는 크기 힌트 종속성을 나타내는 플래그의 현재 상태를 반환합니다.
expandingDirections() 함수를 사용하면 연관된 위젯이 sizeHint() 함수가 나타내는 것보다 더 많은 공간을 사용할 수 있는지 여부와, 어떤 방향으로 확장할 수 있는지 확인할 수 있습니다.
마지막으로, QSizePolicy 클래스는 이 크기 정책을 주어진 정책과 비교하는 연산자와, 이 QSizePolicy를 QVariant 객체로 저장하는 QVariant 연산자를 제공합니다.
QSize, QWidget::sizeHint(), QWidget::sizePolicy, QLayoutItem::sizeHint()도 참조하십시오 .
멤버 유형 설명
enum QSizePolicy::ControlType
flags QSizePolicy::ControlTypes
이 열거형은 레이아웃 상호작용 측면에서 다양한 위젯 유형을 지정합니다:
| 상수 | 값 | 설명 |
|---|---|---|
QSizePolicy::DefaultType | 0x00000001 | 아무것도 지정되지 않았을 때의 기본 유형입니다. |
QSizePolicy::ButtonBox | 0x00000002 | QDialogButtonBox 인스턴스. |
QSizePolicy::CheckBox | 0x00000004 | QCheckBox 인스턴스. |
QSizePolicy::ComboBox | 0x00000008 | QComboBox 인스턴스. |
QSizePolicy::Frame | 0x00000010 | QFrame 인스턴스. |
QSizePolicy::GroupBox | 0x00000020 | QGroupBox 인스턴스. |
QSizePolicy::Label | 0x00000040 | QLabel 인스턴스. |
QSizePolicy::Line | 0x00000080 | QFrame::HLine 또는 QFrame::VLine 을 사용하는 QFrame 인스턴스. |
QSizePolicy::LineEdit | 0x00000100 | QLineEdit 인스턴스. |
QSizePolicy::PushButton | 0x00000200 | QPushButton 인스턴스. |
QSizePolicy::RadioButton | 0x00000400 | QRadioButton 인스턴스. |
QSizePolicy::Slider | 0x00000800 | QAbstractSlider 인스턴스. |
QSizePolicy::SpinBox | 0x00001000 | QAbstractSpinBox 인스턴스. |
QSizePolicy::TabWidget | 0x00002000 | QTabWidget 인스턴스. |
QSizePolicy::ToolButton | 0x00004000 | QToolButton 인스턴스. |
ControlTypes 유형은 QFlags<ControlType>에 대한 typedef입니다. 이 유형은 ControlType 값들의 OR 조합을 저장합니다.
setControlType() 및 controlType()도 참조하십시오 .
enum QSizePolicy::Policy
이 열거형은 QSizePolicy 를 생성할 때 사용되는 차원별 다양한 크기 지정 유형을 설명합니다.
| 상수 | 값 | 상수값 |
|---|---|---|
QSizePolicy::Fixed | 0 | QWidget::sizeHint()만이 허용되는 유일한 대안이기 때문에, 위젯은 절대 커지거나 작아질 수 없습니다(예: 푸시 버튼의 세로 방향). |
QSizePolicy::Minimum | GrowFlag | sizeHint()는 최소 크기이며, 이 크기만으로도 충분합니다. 위젯을 확장할 수는 있지만, 더 크게 만드는 데는 이점이 없습니다(예: 푸시 버튼의 가로 방향). sizeHint()에서 제공된 크기보다 작아질 수는 없습니다. |
QSizePolicy::Maximum | ShrinkFlag | sizeHint()는 최대 크기입니다. 다른 위젯(예: 구분선)에 공간이 필요한 경우, 위젯은 아무런 문제 없이 어느 정도까지나 축소될 수 있습니다. 위젯의 크기는 sizeHint()에서 제공하는 크기보다 클 수 없습니다. |
QSizePolicy::Preferred | GrowFlag | ShrinkFlag | sizeHint()가 가장 적합하지만, 위젯을 축소하더라도 여전히 유용하게 사용할 수 있습니다. 위젯을 확장할 수는 있지만, sizeHint()보다 더 크게 만드는 데는 이점이 없습니다(기본 QWidget 정책). |
QSizePolicy::Expanding | GrowFlag | ShrinkFlag | ExpandFlag | sizeHint()는 합리적인 크기이지만, 위젯을 축소하더라도 여전히 유용하게 사용할 수 있습니다. 위젯은 여유 공간을 활용할 수 있으므로 가능한 한 많은 공간을 확보해야 합니다(예: 가로 슬라이더의 가로 방향). |
QSizePolicy::MinimumExpanding | GrowFlag | ExpandFlag | sizeHint()는 최소 크기이며, 이 정도면 충분합니다. 위젯은 여유 공간을 활용할 수 있으므로 가능한 한 많은 공간을 할당받아야 합니다(예: 가로 슬라이더의 가로 방향). |
QSizePolicy::Ignored | ShrinkFlag | GrowFlag | IgnoreFlag | sizeHint()는 무시됩니다. 위젯은 가능한 한 많은 공간을 할당받게 됩니다. |
PolicyFlag, setHorizontalPolicy(), setVerticalPolicy()도 참조하십시오 .
enum QSizePolicy::PolicyFlag
이러한 플래그들은 서로 결합되어 다양한 ` Policy ` 값을 형성합니다:
| 상수 | 값 | 설명 |
|---|---|---|
QSizePolicy::GrowFlag | 1 | 필요한 경우 위젯이 크기 힌트보다 더 커질 수 있습니다. |
QSizePolicy::ExpandFlag | 2 | 위젯은 가능한 한 많은 공간을 확보해야 합니다. |
QSizePolicy::ShrinkFlag | 4 | 필요한 경우 위젯은 크기 힌트보다 작아질 수 있습니다. |
QSizePolicy::IgnoreFlag | 8 | 위젯의 크기 힌트는 무시됩니다. 위젯은 가능한 한 많은 공간을 할당받습니다. |
Policy도 참조하십시오 .
멤버 함수 문서
[constexpr noexcept] QSizePolicy::QSizePolicy()
Fixed 를 가로 및 세로 정책으로 지정하여 QSizePolicy 객체를 생성합니다.
이 정책은 setHorizontalPolicy() 및 setVerticalPolicy() 함수를 사용하여 변경할 수 있습니다. 위젯의 바람직한 높이가 위젯의 너비에 따라 달라지는 경우(예: 줄 바꿈이 적용된 QLabel )에는 setHeightForWidth() 함수를 사용하십시오.
setHorizontalStretch() 및 setVerticalStretch()도 참조하십시오 .
[constexpr noexcept] QSizePolicy::QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical, QSizePolicy::ControlType type = DefaultType)
지정된 ` horizontal ` 및 ` vertical ` 정책과, 지정된 컨트롤 ` type`을 사용하여 `QSizePolicy` 객체를 생성합니다.
위젯의 선호 높이가 위젯의 너비에 따라 달라지는 경우(예: 줄 바꿈이 적용된 QLabel )에는 setHeightForWidth()를 사용하십시오.
setHorizontalStretch(), setVerticalStretch() 및 controlType()도 참조하십시오 .
[noexcept] QSizePolicy::ControlType QSizePolicy::controlType() const
이 크기 정책이 적용되는 위젯과 관련된 컨트롤 유형을 반환합니다.
setControlType()도 참조하십시오 .
[constexpr noexcept] Qt::Orientations QSizePolicy::expandingDirections() const
위젯이 ` QWidget::sizeHint()` 함수가 지정한 것보다 더 많은 공간을 사용할 수 있는지 여부를 반환합니다.
Qt::Horizontal 또는 Qt::Vertical 값은 위젯이 가로 또는 세로로 확장될 수 있음을 의미하며(즉, 가로 또는 세로 정책이 Expanding 또는 MinimumExpanding 인 경우), Qt::Horizontal | Qt::Vertical 값은 위젯이 양쪽 방향으로 모두 확장될 수 있음을 의미합니다.
horizontalPolicy() 및 verticalPolicy()도 참조하십시오 .
[constexpr noexcept] bool QSizePolicy::hasHeightForWidth() const
위젯의 기본 높이가 너비에 따라 달라지는 경우 ` true `를 반환하고, 그렇지 않은 경우 ` false`를 반환합니다.
setHeightForWidth()도 참조하십시오 .
[constexpr noexcept] bool QSizePolicy::hasWidthForHeight() const
위젯의 너비가 높이에 따라 달라지는 경우 ` true `를 반환하고, 그렇지 않은 경우 ` false`를 반환합니다.
setWidthForHeight()도 참조하십시오 .
[constexpr noexcept] QSizePolicy::Policy QSizePolicy::horizontalPolicy() const
크기 정책의 가로 성분을 반환합니다.
setHorizontalPolicy(), verticalPolicy() 및 horizontalStretch()도 참조하십시오 .
[constexpr noexcept] int QSizePolicy::horizontalStretch() const
크기 정책의 가로 확장 계수를 반환합니다.
setHorizontalStretch(), verticalStretch(), horizontalPolicy()도 참조하십시오 .
[constexpr noexcept] bool QSizePolicy::retainSizeWhenHidden() const
위젯이 숨겨졌을 때 레이아웃이 위젯의 크기를 유지해야 하는지 여부를 반환합니다. 기본값은 ` false `입니다.
setRetainSizeWhenHidden()도 참조하십시오 .
[noexcept] void QSizePolicy::setControlType(QSizePolicy::ControlType type)
이 크기 정책이 적용되는 위젯과 관련된 컨트롤 유형을 type 로 설정합니다.
컨트롤 유형은 이 크기 정책이 적용되는 위젯의 유형을 지정합니다. 이는 일부 스타일(특히 QMacStyle)에서 위젯 사이에 적절한 간격을 삽입하는 데 사용됩니다. 예를 들어, macOS Aqua 가이드라인에 따르면 푸시 버튼은 12픽셀 간격을 두어야 하는 반면, 수직으로 쌓인 라디오 버튼은 6픽셀만 필요하도록 규정하고 있습니다.
controlType() 및 QStyle::layoutSpacing()도 참조하십시오 .
[constexpr noexcept] void QSizePolicy::setHeightForWidth(bool dependent)
위젯의 선호 높이가 너비에 따라 달라지는지 여부를 결정하는 플래그를 ` dependent`로 설정합니다.
hasHeightForWidth() 및 setWidthForHeight()도 참조하십시오 .
[constexpr noexcept] void QSizePolicy::setHorizontalPolicy(QSizePolicy::Policy policy)
수평 성분을 지정된 policy 로 설정합니다.
horizontalPolicy(), setVerticalPolicy() 및 setHorizontalStretch()도 참조하십시오 .
[constexpr] void QSizePolicy::setHorizontalStretch(int stretchFactor)
크기 정책의 가로 확장 계수를 지정된 값 stretchFactor 으로 설정합니다. stretchFactor 는 [0,255] 범위 내에 있어야 합니다.
수평 레이아웃에서 두 위젯이 서로 인접해 있는 경우, 왼쪽 위젯의 수평 확장 계수를 2로, 오른쪽 위젯의 확장 계수를 1로 설정하면 왼쪽 위젯의 크기가 항상 오른쪽 위젯의 두 배가 됩니다.
horizontalStretch(), setVerticalStretch(), setHorizontalPolicy()도 참조하십시오 .
[constexpr noexcept] void QSizePolicy::setRetainSizeWhenHidden(bool retainSize)
레이아웃이 위젯이 숨겨졌을 때 위젯의 크기를 유지할지 여부를 설정합니다. ` retainSize `가 ` true`인 경우, 위젯을 숨겨도 레이아웃은 변경되지 않습니다.
retainSizeWhenHidden()도 참조하십시오 .
[constexpr noexcept] void QSizePolicy::setVerticalPolicy(QSizePolicy::Policy policy)
수직 성분을 지정된 policy 로 설정합니다.
verticalPolicy(), setHorizontalPolicy() 및 setVerticalStretch()도 참조하십시오 .
[constexpr] void QSizePolicy::setVerticalStretch(int stretchFactor)
크기 정책의 수직 확장 계수를 지정된 값 stretchFactor 으로 설정합니다. stretchFactor 는 [0,255] 범위 내에 있어야 합니다.
수직 레이아웃에서 두 위젯이 서로 인접해 있을 때, 위쪽 위젯의 수직 확장 계수를 2로, 아래쪽 위젯의 계수를 1로 설정하면 위쪽 위젯의 크기가 항상 아래쪽 위젯의 두 배가 되도록 보장됩니다.
verticalStretch(), setHorizontalStretch(), setVerticalPolicy()도 참조하십시오 .
[constexpr noexcept] void QSizePolicy::setWidthForHeight(bool dependent)
위젯의 너비가 높이에 따라 달라지는지 여부를 결정하는 플래그를 ` dependent`로 설정합니다.
이 기능은 QGraphicsLayout 의 하위 클래스에서만 지원됩니다. 높이-너비 제약 조건과 너비-높이 제약 조건이 동시에 적용된 레이아웃을 구성할 수는 없습니다.
hasWidthForHeight() 및 setHeightForWidth()도 참조하십시오 .
[constexpr noexcept] void QSizePolicy::transpose()
가로 및 세로 방향 설정을 바꾸고 화면을 늘립니다.
transposed()도 참조하십시오 .
[constexpr noexcept] QSizePolicy QSizePolicy::transposed() const
가로 및 세로 정책과 스트레치 설정이 서로 바뀐 크기 정책 객체를 반환합니다.
transpose()도 참조하십시오 .
[constexpr noexcept] QSizePolicy::Policy QSizePolicy::verticalPolicy() const
크기 정책의 수직 성분을 반환합니다.
setVerticalPolicy(), horizontalPolicy(), verticalStretch()도 참조하십시오 .
[constexpr noexcept] int QSizePolicy::verticalStretch() const
크기 정책의 세로 방향 확장 계수를 반환합니다.
setVerticalStretch(), horizontalStretch() 및 verticalPolicy()도 참조하십시오 .
QSizePolicy::operator QVariant() const
이 QSizePolicy 를 저장하는 QVariant 를 반환합니다.
[constexpr noexcept] bool QSizePolicy::operator!=(const QSizePolicy &other) const
이 정책이 other 와 다를 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.
operator==()도 참조하십시오 .
[constexpr noexcept] bool QSizePolicy::operator==(const QSizePolicy &other) const
이 정책이 other 와 동일한 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.
operator!=()도 참조하십시오 .
관련 비회원
[noexcept] size_t qHash(QSizePolicy key, size_t seed = 0)
seed 를 계산의 시드로 사용하여 key 에 대한 해시 값을 반환합니다.
QDataStream &operator<<(QDataStream &stream, const QSizePolicy &policy)
데이터 스트림 stream 에 크기 policy 를 기록합니다.
QDataStream 연산자의 형식항목도 참조하십시오 .
QDataStream &operator>>(QDataStream &stream, QSizePolicy &policy)
데이터 스트림 stream 에서 크기 policy 를 읽습니다.
QDataStream 연산자의 형식항목도 참조하십시오 .
© 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.