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 オブジェクトを作成します。これは、QString 、QPalette 、QColor のような型に対する 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_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 | QStyleOptionMenuItem |
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 (インタビューで使用) |
以下の値は、カスタム・コントロールに使用されます:
定数 | 値 | 説明 |
---|---|---|
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)
このQStyleOption にother を割り当てる。
メンバー変数ドキュメント
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)
与えられた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も参照のこと 。
© 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.