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, andQStyleOptionViewItem

パブリック型

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(QStyleOption *option)
T qstyleoption_cast(const QStyleOption *option)

詳細説明

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

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

QStyle 関数の呼び出し側は、通常、スタック上に QStyleOption オブジェクトを作成します。これは、QStringQPaletteQColor のような型に対する Qt の暗黙的な共有の広範な使用と相まって、不必要なメモリ割り当てが行われないことを保証します。

次のコード・スニペットは、特定の 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 です。

QStyleOption パラメータを取るQStyle 関数を再実装するとき、多くの場合、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_MenuItem4QStyleOptionMenuItem
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 (インタビューで使用)

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

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

指定されたversiontype を持つ QStyleOption を構築します。

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

メンバ変数stateQStyle::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)

このQStyleOptionother を割り当てる。

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

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 QGraphicsObjectQQuickItem

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

int QStyleOption::type

この変数はスタイルオプションのオプションタイプを保持します。

デフォルト値はSO_Default です。

OptionTypeも参照してください

int QStyleOption::version

この変数は、スタイル・オプションのバージョンを保持します。

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

デフォルト値は 1 です。

関連する非会員

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

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

与えられたoption の型に応じて T またはnullptr を返す。

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

与えられたoptiontypeversion に応じて 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も参照のこと

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