QStyleOption Class

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

Header: #include <QStyleOption>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Inherited By:
16 types

QStyleOptionButton, QStyleOptionComplex, QStyleOptionDockWidget, QStyleOptionFocusRect, QStyleOptionFrame, QStyleOptionGraphicsItem, QStyleOptionHeader, QStyleOptionMenuItem, QStyleOptionProgressBar, QStyleOptionRubberBand, QStyleOptionTab, QStyleOptionTabBarBase, QStyleOptionTabWidgetFrame, QStyleOptionToolBar, QStyleOptionToolBox, and 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(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 for this class)。

この型は、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)

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

これは便利な関数です。メンバ変数は手動で初期化することもできます。

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 QGraphicsObject およびQQuickItem

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も参照してください

ここに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。