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::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 つのウィジェットが隣接している場合、左側のウィジェットの水平伸縮係数を 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.