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_Button | 2 | QStyleOptionButton |
QStyleOption::SO_ComboBox | 0xf0004 | QStyleOptionComboBox |
QStyleOption::SO_Complex | 0xf0000 | QStyleOptionComplex |
QStyleOption::SO_Default | 0 | QStyleOption |
QStyleOption::SO_DockWidget | 9 | QStyleOptionDockWidget |
QStyleOption::SO_FocusRect | 1 | QStyleOptionFocusRect |
QStyleOption::SO_Frame | 5 | QStyleOptionFrame |
QStyleOption::SO_GraphicsItem | 15 | QStyleOptionGraphicsItem |
QStyleOption::SO_GroupBox | 0xf0006 | QStyleOptionGroupBox |
QStyleOption::SO_Header | 8 | QStyleOptionHeader |
QStyleOption::SO_MenuItem | 4 | QStyleOptionMenuItemV2 |
QStyleOption::SO_ProgressBar | 6 | QStyleOptionProgressBar |
QStyleOption::SO_RubberBand | 13 | QStyleOptionRubberBand |
QStyleOption::SO_SizeGrip | 0xf0007 | QStyleOptionSizeGrip |
QStyleOption::SO_Slider | 0xf0001 | QStyleOptionSlider |
QStyleOption::SO_SpinBox | 0xf0002 | QStyleOptionSpinBox |
QStyleOption::SO_Tab | 3 | QStyleOptionTab |
QStyleOption::SO_TabBarBase | 12 | QStyleOptionTabBarBase |
QStyleOption::SO_TabWidgetFrame | 11 | QStyleOptionTabWidgetFrame |
QStyleOption::SO_TitleBar | 0xf0005 | QStyleOptionTitleBar |
QStyleOption::SO_ToolBar | 14 | QStyleOptionToolBar |
QStyleOption::SO_ToolBox | 7 | QStyleOptionToolBox |
QStyleOption::SO_ToolButton | 0xf0003 | QStyleOptionToolButton |
QStyleOption::SO_ViewItem | 10 | QStyleOptionViewItem (Interviewsで使用) |
カスタムコントロールには、以下の値が使用されます:
| 定数 | 値 | 説明 |
|---|---|---|
QStyleOption::SO_CustomBase | 0xf00 | カスタム QStyleOptions 用に予約されています。すべてのカスタムコントロールの値はこの値以上でなければなりません |
QStyleOption::SO_ComplexCustomBase | 0xf000000 | カスタム QStyleOptions 用に予約されています。すべてのカスタム複合コントロールの値はこの値以上でなければなりません |
typeも参照してください 。
enum QStyleOption::StyleOptionType
この列挙型は、スタイルオプションのタイプに関する情報を保持するために使用され、QStyleOption の各サブクラスに対して定義されています。
| 定数 | 定数値 | 説明 |
|---|---|---|
QStyleOption::Type | SO_Default | 指定されたスタイルオプションのタイプ(このクラスでは `SO_Default `)。 |
この型は、QStyleOption 、そのサブクラス、およびqstyleoption_cast() によって、スタイルオプションの型を判別するために内部的に使用されます。一般的に、独自のQStyleOption サブクラスや独自のスタイルを作成する場合を除き、この点について気にする必要はありません。
StyleOptionVersionも参照してください 。
enum QStyleOption::StyleOptionVersion
この列挙型は、スタイルオプションのバージョンに関する情報を保持するために使用され、QStyleOption の各サブクラスに対して定義されています。
| 定数 | 定数値 | 説明 |
|---|---|---|
QStyleOption::Version | 1 | 1 |
このバージョンは、互換性を損なうことなく拡張機能を実装するために、QStyleOption のサブクラスで使用されます。qstyleoption_cast() を使用する場合、通常、これを確認する必要はありません。
StyleOptionTypeも参照してください 。
メンバ関数のドキュメント
QStyleOption::QStyleOption(int version = QStyleOption::Version, int type = SO_Default)
指定されたversion およびtype を持つQStyleOptionを生成します。
このバージョン番号は QStyleOption にとって特別な意味を持ちません。サブクラスでは、同じオプション型の異なるバージョンを区別するために使用することができます。
state メンバ変数は、QStyle::State_None に初期化されます。
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.