QSizePolicy Class

QSizePolicy 클래스는 가로 및 세로 크기 조정 정책을 설명하는 레이아웃 속성입니다. 더 보기...

Header: #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
QVariant 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()도 참조하세요 .

멤버 유형 문서

열거형 QSizePolicy::ControlType
플래그 QSizePolicy::ControlTypes

이 열거형은 레이아웃 상호 작용 측면에서 다양한 유형의 위젯을 지정합니다:

상수설명
QSizePolicy::DefaultType0x00000001지정되지 않은 경우 기본 유형입니다.
QSizePolicy::ButtonBox0x00000002QDialogButtonBox 인스턴스.
QSizePolicy::CheckBox0x00000004QCheckBox 인스턴스.
QSizePolicy::ComboBox0x00000008QComboBox 인스턴스.
QSizePolicy::Frame0x00000010QFrame 인스턴스.
QSizePolicy::GroupBox0x00000020QGroupBox 인스턴스.
QSizePolicy::Label0x00000040QLabel 인스턴스.
QSizePolicy::Line0x00000080QFrame::HLine 또는 QFrame::VLine 를 사용하는 QFrame 인스턴스.
QSizePolicy::LineEdit0x00000100QLineEdit 인스턴스.
QSizePolicy::PushButton0x00000200QPushButton 인스턴스.
QSizePolicy::RadioButton0x00000400QRadioButton 인스턴스.
QSizePolicy::Slider0x00000800QAbstractSlider 인스턴스.
QSizePolicy::SpinBox0x00001000QAbstractSpinBox 인스턴스.
QSizePolicy::TabWidget0x00002000QTabWidget 인스턴스.
QSizePolicy::ToolButton0x00004000QToolButton 인스턴스.

ControlTypes 유형은 QFlags<ControlType>에 대한 typedef입니다. 제어 유형 값의 OR 조합을 저장합니다.

setControlType() 및 controlType()도 참조하십시오 .

enum QSizePolicy::Policy

이 열거형은 QSizePolicy 을 구성할 때 사용되는 다양한 차원별 크기 조정 유형을 설명합니다.

Constant설명
QSizePolicy::Fixed0QWidget::sizeHint()는 허용되는 유일한 대안이므로 위젯이 절대 커지거나 줄어들 수 없습니다(예: 푸시 버튼의 세로 방향).
QSizePolicy::MinimumGrowFlagsizeHint()는 최소한의 값이면 충분합니다. 위젯은 확장할 수 있지만, 더 커도 이점이 없습니다(예: 푸시 버튼의 가로 방향). sizeHint()가 제공하는 크기보다 작을 수 없습니다.
QSizePolicy::MaximumShrinkFlagsizeHint()는 최대치입니다. 다른 위젯에 공간이 필요한 경우(예: 구분선) 위젯은 성능 저하 없이 얼마든지 축소할 수 있습니다. sizeHint()가 제공하는 크기보다 클 수 없습니다.
QSizePolicy::PreferredGrowFlag | ShrinkFlagsizeHint()가 가장 좋지만 위젯을 축소해도 여전히 유용할 수 있습니다. 위젯은 확장할 수 있지만 sizeHint()(기본값 QWidget 정책)보다 크면 이점이 없습니다.
QSizePolicy::ExpandingGrowFlag | ShrinkFlag | ExpandFlagsizeHint()는 적당한 크기이지만 위젯을 축소해도 여전히 유용할 수 있습니다. 위젯은 여분의 공간을 활용할 수 있으므로 가능한 한 많은 공간을 확보해야 합니다(예: 가로 슬라이더의 가로 방향).
QSizePolicy::MinimumExpandingGrowFlag | ExpandFlagsizeHint()는 최소한의 공간이면 충분합니다. 위젯은 여분의 공간을 사용할 수 있으므로 가능한 한 많은 공간을 확보해야 합니다(예: 가로 슬라이더의 가로 방향).
QSizePolicy::IgnoredShrinkFlag | GrowFlag | IgnoreFlagsizeHint()는 무시됩니다. 위젯은 가능한 한 많은 공간을 확보합니다.

PolicyFlag, setHorizontalPolicy() 및 setVerticalPolicy()도 참조하세요 .

enum QSizePolicy::PolicyFlag

이러한 플래그가 결합되어 다양한 Policy 값을 형성합니다:

상수설명
QSizePolicy::GrowFlag1위젯은 필요한 경우 크기 힌트 이상으로 커질 수 있습니다.
QSizePolicy::ExpandFlag2위젯은 가능한 한 많은 공간을 확보해야 합니다.
QSizePolicy::ShrinkFlag4필요한 경우 위젯은 크기 힌트 아래로 축소할 수 있습니다.
QSizePolicy::IgnoreFlag8위젯의 크기 힌트는 무시됩니다. 위젯은 가능한 한 많은 공간을 확보합니다.

Policy참조하세요 .

멤버 함수 문서

[constexpr noexcept] QSizePolicy::QSizePolicy()

Fixed 을 수평 및 수직 정책으로 사용하여 QSizePolicy 객체를 구성합니다.

정책은 setHorizontalPolicy() 및 setVerticalPolicy() 함수를 사용하여 변경할 수 있습니다. 위젯의 기본 높이가 위젯의 너비에 따라 달라지는 경우 setHeightForWidth() 함수를 사용합니다(예: 줄 바꿈이 있는 QLabel ).

setHorizontalStretch() 및 setVerticalStretch()도 참조하세요 .

[constexpr noexcept] QSizePolicy::QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical, QSizePolicy::ControlType type = DefaultType)

지정된 horizontalvertical 정책과 지정된 컨트롤 type 을 사용하여 QSizePolicy 객체를 구축합니다.

위젯의 기본 높이가 위젯의 너비에 따라 달라지는 경우 setHeightForWidth()를 사용합니다(예: 줄 바꿈이 있는 QLabel ).

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)

위젯이 숨겨져 있을 때 레이아웃이 위젯의 크기를 유지할지 여부를 설정합니다. retainSizetrue 인 경우 위젯을 숨겨도 레이아웃이 변경되지 않습니다.

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()도 참조하세요 .

QVariant 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)

데이터 스트림 streampolicy 크기를 씁니다.

QDataStream 연산자의 형식을참조하십시오 .

QDataStream &operator>>(QDataStream &stream, QSizePolicy &policy)

데이터 스트림 stream 에서 policy 크기를 읽습니다.

QDataStream 연산자의 형식을참조하십시오 .

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