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
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 には、2 つの独立したQSizePolicy::Policy 値と 2 つの伸縮係数が含まれます。1 つはウィジェットの水平サイズポリシーを記述し、もう 1 つは垂直サイズポリシーを記述します。また、優先サイズの高さと幅が関連しているかどうかを示すフラグも含まれています。

水平および垂直ポリシーはコンストラクタで設定でき、setHorizontalPolicy() およびsetVerticalPolicy() 関数を使用して変更できます。伸張係数は、setHorizontalStretch() とsetVerticalStretch() 関数を使用して設定できる。ウィジェットのsizeHint() が幅依存であるかどうかを示すフラグは、setHeightForWidth() 関数を使用して設定することができます(メニュー・バーやワード・ラッピング・ラベルなど)。

horizontalPolicy(),verticalPolicy(),horizontalStretch(),verticalStretch() 関数を使用すると、現在のサイズ・ポリシーとストレッチ・ファクタを取得できます。また、transpose ()関数を使用して、水平方向と垂直方向の方針とストレッチを入れ替えます。hasHeightForWidth() 関数は、サイズ・ヒントの依存関係を示すフラグの現在のステータスを返します。

expandingDirections() 関数を使用して、関連するウィジェットがsizeHint() 関数が示すよりも多くのスペースを使用できるかどうかを判断し、どの方向に拡張できるかを調べます。

最後に、QSizePolicy クラスは、このサイズ ポリシーを指定されたポリシーと比較する演算子と、この QSizePolicy をQVariant オブジェクトとして格納するQVariant 演算子を提供します。

QSizeQWidget::sizeHint()、QWidget::sizePolicy 、およびQLayoutItem::sizeHint()も参照してください

メンバ型ドキュメント

enum QSizePolicy::ControlType
flags 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である。ControlType値のORの組み合わせを格納する。

setControlType() およびcontrolType()も参照の こと。

enum QSizePolicy::Policy

この列挙型は、QSizePolicy を構築する際に使用される、寸法ごとの様々なサイズタイプを記述します。

定数説明
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()

QSizePolicy オブジェクトを、Fixed を水平方向と垂直方向のポリシーとして構築します。

ポリシーは、setHorizontalPolicy() とsetVerticalPolicy() 関数を使用して変更できます。ウィジェットの好ましい高さがウィジェットの幅に依存する場合(例えば、行の折り返しを持つQLabel )、setHeightForWidth ()関数を使用してください。

setHorizontalStretch() およびsetVerticalStretch()も参照

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

指定されたhorizontalvertical ポリシー、および指定されたコントロール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 つのウィジェットが隣接している場合、左側のウィジェットの水平ストレッチ係数を 2 に設定し、右側のウィジェットの水平ストレッチ係数を 1 に設定すると、左側のウィジェットは常に右側のウィジェットの 2 倍のサイズになります。

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 つのウィジェットが隣接している場合、上側のウィジェットの垂直方向の伸縮率を 2 に設定し、下側のウィジェットの伸縮率を 1 に設定すると、上側のウィジェットは常に下側のウィジェットの 2 倍のサイズになります。

verticalStretch(),setHorizontalStretch(),setVerticalPolicy()も参照してください

[constexpr noexcept] void QSizePolicy::setWidthForHeight(bool dependent)

ウィジェットの幅が高さに依存するかどうかを決定するフラグをdependent に設定します。

これはQGraphicsLayout のサブクラスでのみサポートされます。height-for-width 制約と width-for-height 制約の両方を同時に持つレイアウトを持つことはできません。

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)

key のハッシュ値を返す。計算のシードにはseed を使用する。

QDataStream &operator<<(QDataStream &stream, const QSizePolicy &policy)

サイズpolicy をデータ・ストリームstream に書き込みます。

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.