このページでは

QStyleOption Class

QStyleOption クラスは、QStyle 関数で使用されるパラメータを格納します。詳細...

ヘッダー: #include <QStyleOption>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
継承元:
16 種類

QStyleOptionButton、QStyleOptionComplex 、QStyleOptionDockWidget 、QStyleOptionFocusRect 、QStyleOptionFrame 、QStyleOptionGraphicsItem 、QStyleOptionHeader 、QStyleOptionMenuItem 、QStyleOptionProgressBar 、QStyleOptionRubberBand 、QStyleOptionTab 、QStyleOptionTabBarBase 、QStyleOptionTabWidgetFrame 、QStyleOptionToolBar 、QStyleOptionToolBox 、およびQStyleOptionViewItem

パブリック型

enum OptionType { SO_Button, SO_ComboBox, SO_Complex, SO_Default, SO_DockWidget, …, SO_ComplexCustomBase }
enum StyleOptionType { Type }
enum StyleOptionVersion { Version }

パブリック関数

QStyleOption(int version = QStyleOption::Version, int type = SO_Default)
QStyleOption(const QStyleOption &other)
~QStyleOption()
void initFrom(const QWidget *widget)
QStyleOption &operator=(const QStyleOption &other)

パブリック変数

Qt::LayoutDirection direction
QFontMetrics fontMetrics
QPalette palette
QRect rect
QStyle::State state
QObject *styleObject
int type
int version
T qstyleoption_cast(const QStyleOption *option)
T qstyleoption_cast(QStyleOption *option)

詳細な説明

QStyleOption およびそのサブクラスには、QStyle 関数がグラフィカル要素を描画するために必要なすべての情報が含まれています。

パフォーマンス上の理由から、メンバ関数は少なく、メンバ変数へのアクセスは直接行われます(つまり、. または-> 演算子を使用します)。これにより、構造体の使用が簡単になり、これらが単にスタイル関数によって使用されるパラメータであることを強調しています。

QStyle 関数の呼び出し元は、通常、スタック上にQStyleOptionオブジェクトを作成します。これに加え、QtではQString 、QPalette 、QColor などの型に対して暗黙の共有が広く採用されているため、不要なメモリ割り当てが行われないことが保証されます。

以下のコードスニペットは、特定の QStyleOption サブクラスを使用してプッシュボタンを描画する方法を示しています。

void MyPushButton::paintEvent(QPaintEvent *)
{
    QStyleOptionButton option;
    option.initFrom(this);
    option.state = isDown() ? QStyle::State_Sunken : QStyle::State_Raised;
    if (isDefault())
        option.features |= QStyleOptionButton::DefaultButton;
    option.text = text();
    option.icon = icon();

    QPainter painter(this);
    style()->drawControl(QStyle::CE_PushButton, &option, &painter, this);
}

この例では、コントロールはQStyle::CE_PushButton であり、QStyle::drawControl()のドキュメントによると、対応するクラスはQStyleOptionButton です。

QStyle の関数でQStyleOptionパラメータを受け取る場合、そのQStyleOptionをサブクラスにキャストする必要があることがよくあります。安全のため、qstyleoption_cast()を使用してポインタの型が正しいことを確認できます。例えば:

void MyStyle::drawPrimitive(PrimitiveElement element,
                            const QStyleOption *option,
                            QPainter *painter,
                            const QWidget *widget)
{
    if (element == PE_FrameFocusRect) {
        const QStyleOptionFocusRect *focusRectOption =
                qstyleoption_cast<const QStyleOptionFocusRect *>(option);
        if (focusRectOption) {
            // ...
        }
    }
    // ...
}

option が指すオブジェクトの型が正しくない場合、qstyleoption_cast() 関数は 0 を返します。

「 QStyle 」および「QStylePainter 」も参照してください 。

メンバ型のドキュメント

enum QStyleOption::OptionType

この列挙型は、QStyleOption 、そのサブクラス、およびqstyleoption_cast() によって、スタイルオプションの型を判別するために内部的に使用されます。一般的に、独自のQStyleOption サブクラスや独自のスタイルを作成したい場合を除き、この点について気にする必要はありません。

定数値説明
QStyleOption::SO_Button2QStyleOptionButton
QStyleOption::SO_ComboBox0xf0004QStyleOptionComboBox
QStyleOption::SO_Complex0xf0000QStyleOptionComplex
QStyleOption::SO_Default0QStyleOption
QStyleOption::SO_DockWidget9QStyleOptionDockWidget
QStyleOption::SO_FocusRect1QStyleOptionFocusRect
QStyleOption::SO_Frame5QStyleOptionFrame
QStyleOption::SO_GraphicsItem15QStyleOptionGraphicsItem
QStyleOption::SO_GroupBox0xf0006QStyleOptionGroupBox
QStyleOption::SO_Header8QStyleOptionHeader
QStyleOption::SO_MenuItem4QStyleOptionMenuItemV2
QStyleOption::SO_ProgressBar6QStyleOptionProgressBar
QStyleOption::SO_RubberBand13QStyleOptionRubberBand
QStyleOption::SO_SizeGrip0xf0007QStyleOptionSizeGrip
QStyleOption::SO_Slider0xf0001QStyleOptionSlider
QStyleOption::SO_SpinBox0xf0002QStyleOptionSpinBox
QStyleOption::SO_Tab3QStyleOptionTab
QStyleOption::SO_TabBarBase12QStyleOptionTabBarBase
QStyleOption::SO_TabWidgetFrame11QStyleOptionTabWidgetFrame
QStyleOption::SO_TitleBar0xf0005QStyleOptionTitleBar
QStyleOption::SO_ToolBar14QStyleOptionToolBar
QStyleOption::SO_ToolBox7QStyleOptionToolBox
QStyleOption::SO_ToolButton0xf0003QStyleOptionToolButton
QStyleOption::SO_ViewItem10QStyleOptionViewItem (Interviewsで使用)

カスタムコントロールには、以下の値が使用されます:

定数値説明
QStyleOption::SO_CustomBase0xf00カスタム QStyleOptions 用に予約されています。すべてのカスタムコントロールの値はこの値以上でなければなりません
QStyleOption::SO_ComplexCustomBase0xf000000カスタム QStyleOptions 用に予約されています。すべてのカスタム複合コントロールの値はこの値以上でなければなりません

typeも参照してください 。

enum QStyleOption::StyleOptionType

この列挙型は、スタイルオプションのタイプに関する情報を保持するために使用され、QStyleOption の各サブクラスに対して定義されています。

定数定数値説明
QStyleOption::TypeSO_Default指定されたスタイルオプションのタイプ(このクラスでは `SO_Default `)。

この型は、QStyleOption 、そのサブクラス、およびqstyleoption_cast() によって、スタイルオプションの型を判別するために内部的に使用されます。一般的に、独自のQStyleOption サブクラスや独自のスタイルを作成する場合を除き、この点について気にする必要はありません。

StyleOptionVersionも参照してください 。

enum QStyleOption::StyleOptionVersion

この列挙型は、スタイルオプションのバージョンに関する情報を保持するために使用され、QStyleOption の各サブクラスに対して定義されています。

定数定数値説明
QStyleOption::Version11

このバージョンは、互換性を損なうことなく拡張機能を実装するために、QStyleOption のサブクラスで使用されます。qstyleoption_cast() を使用する場合、通常、これを確認する必要はありません。

StyleOptionTypeも参照してください 。

メンバ関数のドキュメント

QStyleOption::QStyleOption(int version = QStyleOption::Version, int type = SO_Default)

指定されたversion およびtype を持つQStyleOptionを生成します。

このバージョン番号は QStyleOption にとって特別な意味を持ちません。サブクラスでは、同じオプション型の異なるバージョンを区別するために使用することができます。

state メンバ変数は、QStyle::State_None に初期化されます。

version およびtypeも参照してください 。

QStyleOption::QStyleOption(const QStyleOption &other)

other のコピーを作成します。

[noexcept] QStyleOption::~QStyleOption()

このスタイルオプションオブジェクトを破棄します。

void QStyleOption::initFrom(const QWidget *widget)

指定されたwidget に基づいて、state 、direction 、rect 、palette 、fontMetrics 、およびstyleObject のメンバ変数を初期化します。

これは便宜上の関数であり、メンバ変数は手動で初期化することも可能です。

QWidget::layoutDirection()、QWidget::rect()、QWidget::palette()、およびQWidget::fontMetrics()も参照してください 。

QStyleOption &QStyleOption::operator=(const QStyleOption &other)

other をこのQStyleOption に割り当てます。

メンバー変数のドキュメント

Qt::LayoutDirection QStyleOption::direction

この変数には、コントロール内にテキストを描画する際に使用するテキストの配置方向が格納されます

デフォルトでは、配置方向は `Qt::LeftToRight` です。

initFrom()も参照してください 。

QFontMetrics QStyleOption::fontMetrics

この変数には、コントロール内にテキストを描画する際に使用するフォントメトリクスが格納されます

デフォルトでは、アプリケーションの既定のフォントが使用されます。

initFrom()も参照してください 。

QPalette QStyleOption::palette

この変数には、コントロールを描画する際に使用するパレットが格納されます

デフォルトでは、アプリケーションのデフォルトパレットが使用されます。

initFrom()も参照してください 。

QRect QStyleOption::rect

この変数には、さまざまな計算や描画に使用すべき領域が格納されます

これは、要素の種類によって異なる意味を持つ場合があります。例えば、QStyle::CE_PushButton 要素の場合はボタン全体の矩形を指しますが、QStyle::CE_PushButtonLabel 要素の場合はプッシュボタンのラベル部分のみを指します。

デフォルト値はヌル矩形、つまり幅と高さの両方が 0 に設定された矩形です。

initFrom()も参照してください 。

QStyle::State QStyleOption::state

この変数には、コントロールの描画時に使用されるスタイルフラグが格納されます

デフォルト値は `QStyle::State_None` です。

initFrom()、QStyle::drawPrimitive()、QStyle::drawControl()、QStyle::drawComplexControl()、およびQStyle::Stateも参照してください 。

QObject *QStyleOption::styleObject

この変数には、スタイルが適用されるオブジェクトが格納されます

組み込みのスタイルは、以下の型をサポートしています:QWidget 、QGraphicsObject 、およびQQuickItem 。

initFrom()も参照してください 。

int QStyleOption::type

この変数には、スタイルオプションのオプションタイプが格納されます

デフォルト値は `SO_Default` です。

「OptionType」も参照してください 。

int QStyleOption::version

この変数には、スタイルオプションのバージョンが格納されます

この値は、互換性を損なうことなく拡張機能を実装するためにサブクラスで利用できます。qstyleoption_cast() 関数を使用する場合、通常はこの値を確認する必要はありません。

デフォルト値は 1 です。

関連する非メンバー

template <typename T> T qstyleoption_cast(const QStyleOption *option)

指定されたoption のtype およびversion に応じて、Tまたはnullptr を返します。

例:

void MyStyle::drawPrimitive(PrimitiveElement element,
                            const QStyleOption *option,
                            QPainter *painter,
                            const QWidget *widget)
{
    if (element == PE_FrameFocusRect) {
        const QStyleOptionFocusRect *focusRectOption =
                qstyleoption_cast<const QStyleOptionFocusRect *>(option);
        if (focusRectOption) {
            // ...
        }
    }
    // ...
}

関連項目: ` QStyleOption::type ` および `QStyleOption::version`。

template <typename T> T qstyleoption_cast(QStyleOption *option)

引数として渡されたoption の型に応じて、Tまたはnullptr を返します。

これはオーバーロードされた関数です。

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