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 typesQStyleOptionButton, 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 オブジェクトを作成します。これは、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 for this class)。 |
この型は、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)
state,direction,rect,palette,fontMetrics およびstyleObject メンバ変数を、指定されたwidget に基づいて初期化する。
これは便利な関数です。メンバ変数は手動で初期化することもできます。
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も参照してください 。
ここに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。