このページでは

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

水平および垂直のポリシーはコンストラクタで設定でき、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::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()

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 つのウィジェットが隣接している場合、左側のウィジェットの水平伸縮係数を 2 に、右側のウィジェットの伸縮係数を 1 に設定すると、左側のウィジェットは常に右側のウィジェットの 2 倍のサイズになります。

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

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)

`key` のハッシュ値を、計算のシードとして `seed ` を使用して返します。

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.