QStyleKitStyle Class
QStyleKitStyle クラスは、Qt Labs StyleKitのスタイルを `Qt Widgets` に適用します。詳細...
| ヘッダー: | #include <QStyleKitStyle> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS LabsStyleKit) target_link_libraries(mytarget PRIVATE Qt6::LabsStyleKit) |
| 以下より: | Qt 6.12 |
| 継承元: | QCommonStyle |
プロパティ
- availableThemeNames : QStringList
- customThemeNames : QStringList
- stylePath : QString
- themeName : QString
パブリック関数
| QStyleKitStyle() | |
| QStyleKitStyle(const QString &filePath) | |
| virtual | ~QStyleKitStyle() override |
| QStringList | availableThemeNames() const |
| QStringList | customThemeNames() const |
| void | setStylePath(const QString &filePath) |
| void | setThemeName(const QString &themeName) |
| QString | stylePath() const |
| QString | themeName() const |
再実装されたパブリック関数
| virtual void | drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *w = nullptr) const override |
| virtual void | drawControl(QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w = nullptr) const override |
| virtual void | drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w = nullptr) const override |
| virtual QStyle::SubControl | hitTestComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *w = nullptr) const override |
| virtual int | pixelMetric(QStyle::PixelMetric m, const QStyleOption *opt = nullptr, const QWidget *widget = nullptr) const override |
| virtual void | polish(QApplication *app) override |
| virtual void | polish(QPalette &palette) override |
| virtual void | polish(QWidget *widget) override |
| virtual QSize | sizeFromContents(QStyle::ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *widget = nullptr) const override |
| virtual QPalette | standardPalette() const override |
| virtual int | styleHint(QStyle::StyleHint sh, const QStyleOption *opt = nullptr, const QWidget *w = nullptr, QStyleHintReturn *shret = nullptr) const override |
| virtual QRect | subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *w = nullptr) const override |
| virtual QRect | subElementRect(QStyle::SubElement r, const QStyleOption *opt, const QWidget *widget = nullptr) const override |
| virtual void | unpolish(QApplication *app) override |
| virtual void | unpolish(QWidget *widget) override |
シグナル
| void | availableThemeNamesChanged(const QStringList &availableThemeNames) |
| void | customThemeNamesChanged(const QStringList &customThemeNames) |
| void | stylePathChanged(const QString &stylePath) |
| void | themeNameChanged(const QString &themeName) |
再実装された保護関数
| virtual bool | event(QEvent *event) override |
| virtual bool | eventFilter(QObject *obj, QEvent *event) override |
詳細な説明
QStyleKitStyleは、StyleKit Style を使用してQt Widgets のスタイルを設定するQStyle の実装です。Style は、各ウィジェットのタイプおよび状態に対する視覚的なデザイン(色、サイズ、半径、境界線、その他のプロパティ)を宣言的に記述するQMLファイルです。これらのプロパティ値が描画を制御し、描画はQPainter によって完全に実行されます。Qt Quick およびシーングラフは、レンダリングには一切関与しません。
この分離により、同じStyle というQMLファイルで、Qt Quick のコントロールとQt Widgets の両方を制御でき、両システムで1つのデザイン定義を共有することが可能になります。
注:StyleKit は Qt Labs モジュールであり、その API は Qt のリリースごとに変更される可能性があります。
スタイルの読み込み
スタイルとは、ルートオブジェクトが `Style` である QML ファイルのことです。スタイルを読み込むには、ファイルパスをコンストラクタまたは `setStylePath()` に渡します。
auto *style = new QStyleKitStyle(QStringLiteral(":/styles/MyStyle.qml"));
QApplication::setStyle(style);スタイルは、QStyleKitStyleインスタンスが所有する内部のQQmlEngine とともに読み込まれます。パスが無効であるか、ルートオブジェクトがStyle でない場合、警告が出力され、有効なstylePath が設定されるまで、スタイルはデフォルトのフォールバックスタイルを使用します。
テーマ
スタイルは、1つ以上の名前付きthemes を定義できます。アクティブなテーマはsetThemeName()で選択され、利用可能なテーマのリストはavailableThemeNames を通じて公開されます。特別なテーマ名System を指定すると、スタイルはプラットフォームのカラースキームに従うようになります。OSのカラースキームが変更されると、アクティブなテーマが自動的に再作成され、すべてのウィジェットが再描画されます。
ウィジェットとStyleKitコントロールのマッピング
各Qt Widgets クラスはStyleKitのコントロールタイプにマッピングされており、これによりStyle 内のどのコントロールエントリが当該クラスに適用されるかが決定されます。 対応するコントロールエントリを使用して、そのウィジェットタイプの視覚的なプロパティ(背景、インジケータ、ハンドルなど、ウィジェットの個々のパーツを含む)を設定します。スタイル設定可能なプロパティの完全なリストについては、ControlStyleProperties を参照してください。特定のコントロールエントリで設定されていないプロパティは、コントロールタイプの階層構造に従ってフォールバックします。たとえば、button はabstractButton にフォールバックし、さらにcontrol にフォールバックします。
上記にリストされていないウィジェットは、現時点ではQStyleKitStyleによってサポートされておらず、QCommonStyle によって描画されます。残りのウィジェットに対するサポートは、将来のリリースで予定されています。逆に、StylableControls にある一部のコントロール項目には、Qt Widgets に相当するものがなく、ウィジェットのスタイル設定時には適用されません。
ウィジェット内のサブコントロール
ウィジェット内の個別のサブコントロールは、それぞれがStyle 内の個別のコントロールエントリに対応しているため、個別にスタイルを設定できます:
| サブ要素 | StyleKit コントロール |
|---|---|
| QStyledItemDelegate items -QComboBox のポップアップリストを含む、すべてのQtアイテムビューのデフォルトデリゲート | itemDelegate |
| これらのアイテムは、ユーザーがチェック可能な場合(つまり、チェックインジケータが表示されている場合) | checkDelegate; 明示的に設定されていない項目については、itemDelegate にフォールバックします |
| 内の個々のタブQTabBar | tabButton |
| QMenu items | menuItem |
| 内のセパレータQMenu | menuSeparator |
| QMenuBar 項目内の項目内の | menuBarItem |
| 内のセパレータQToolBar | toolSeparator |
| QComboBox のポップアップリストコンテナ | popup |
既知の制限事項
QStyleKitStyleはTech Preview段階です。Qt Widgets と併用する場合、以下のStyleKit機能は現在サポートされていません:
- 影— 影は描画されません。
- コントロールの背景における 1.0 を超えるデリゲートスケール— ウィジェットは自身の矩形の外側を描画できないため、拡大縮小された背景はウィジェットの端で切り取られます。margins を使用して背景を内側に配置し、背景が拡大するためのスペースを確保してください。インジケーター、ハンドル、および前景の拡大縮小には影響ありません。
- バリエーション— ウィジェットインスタンスでの `StyleVariation ` の設定は、現時点ではサポートされていません。
- カスタムコントロール— `CustomControl ` を使用したカスタムウィジェットのスタイリングは、現時点ではサポートされていません。
- カスタムデリゲート— `delegate ` プロパティは使用されず、常に組み込みのレンダリングが適用されます。
これらの機能のサポートは、将来のリリースで予定されています。
関連項目: QStyle 、QCommonStyle 、Qt Labs StyleKit、Style 、およびTheme 。
プロパティのドキュメント
[read-only] availableThemeNames : QStringList
このプロパティには、読み込まれたStyle によって公開されるテーマ名のリストが格納されます。
このリストには、組み込みのLight およびDark テーマに加え、スタイルによって定義されたカスタムテーマも含まれます。
アクセス関数:
| QStringList | availableThemeNames() const |
Notifierシグナル:
| void | availableThemeNamesChanged(const QStringList &availableThemeNames) |
[read-only] customThemeNames : QStringList
このプロパティには、読み込まれたStyle によって定義されたカスタムテーマ名のリストが格納されます。
availableThemeNames とは異なり、このリストには組み込みのLight およびDark テーマは含まれず、スタイルの作成者が明示的に定義したテーマのみが含まれます。スタイルが読み込まれていない場合は、空のリストを返します。
アクセス関数:
| QStringList | customThemeNames() const |
Notifierシグナル:
| void | customThemeNamesChanged(const QStringList &customThemeNames) |
関連項目: availableThemeNames およびthemeName 。
stylePath : QString
このプロパティには、このスタイルを定義する QML ファイル(Style )へのパスが格納されます。
値は、ローカルファイルへのパス、またはリソースファイルシステム内のファイルへのパス(例::/styles/MyStyle.qml )です。 相対パスは、アプリケーションの作業ディレクトリを基準に解決されます。ファイルには、ルートオブジェクトが `Style` である QML コンポーネントが含まれている必要があります。このプロパティを設定すると、スタイルが再読み込みされます。新しいファイルを読み込めない場合は、以前に読み込まれたスタイルが保持され、警告が出力されます。
アクセス関数:
| QString | stylePath() const |
| void | setStylePath(const QString &filePath) |
Notifierシグナル:
| void | stylePathChanged(const QString &stylePath) |
themeName : QString
このプロパティには、アクティブなテーマの名前が格納されます。
値は、availableThemeNames に記載されている項目のいずれか、またはプラットフォームの配色に従うための特別な名前であるSystem のいずれかでなければなりません。このプロパティを設定すると、すべてのウィジェットが更新され、新しいテーマに基づいて再描画されます。
アクセス関数:
| QString | themeName() const |
| void | setThemeName(const QString &themeName) |
Notifierシグナル:
| void | themeNameChanged(const QString &themeName) |
メンバ関数のドキュメント
QStyleKitStyle::QStyleKitStyle()
スタイルが読み込まれていない状態で QStyleKitStyle を生成します。
構築後にsetStylePath() を使用して、QMLStyle を読み込みます。スタイルが読み込まれるまでは、デフォルトのフォールバックスタイルが使用されます。
[explicit] QStyleKitStyle::QStyleKitStyle(const QString &filePath)
QStyleKitStyle オブジェクトを生成し、filePath にある QML ファイル `Style ` を読み込みます。
filePath は、ローカルファイルへのパス、またはリソースファイルシステム内のファイルへのパスです。相対パスは、アプリケーションの作業ディレクトリを基準に解決されます。パスが無効である場合、または読み込まれたコンポーネントのルートオブジェクトがStyle でない場合、警告が出力され、有効なstylePath が設定されるまで、構築されたスタイルはデフォルトのフォールバックスタイルを使用します。
[override virtual noexcept] QStyleKitStyle::~QStyleKitStyle()
QStyleKitStyle を破棄します。
QStringList QStyleKitStyle::availableThemeNames() const
読み込まれたStyle によって公開されているすべてのテーマの名前を返します。これには、組み込みのLight およびDark テーマ、ならびにそのスタイルで定義されたカスタムテーマが含まれます。スタイルが読み込まれていない場合は、空のリストを返します。
注: プロパティ `availableThemeNames`のゲッター 関数です。
関連項目: customThemeNames() およびthemeName()。
QStringList QStyleKitStyle::customThemeNames() const
読み込まれたStyle によって定義されたカスタムテーマの名前を、組み込みのLight およびDark テーマを除いて返します。スタイルが読み込まれていない場合は、空のリストを返します。
注: プロパティ `customThemeNames`のゲッター 関数です。
関連項目: availableThemeNames()。
[override virtual] void QStyleKitStyle::drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *w = nullptr) const
QCommonStyle::drawComplexControl (QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget)const を再実装します。
[override virtual] void QStyleKitStyle::drawControl(QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w = nullptr) const
QCommonStyle::drawControl (QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *widget)const を再実装します。
[override virtual] void QStyleKitStyle::drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w = nullptr) const
QCommonStyle::drawPrimitive (QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *widget)const を再実装します。
[override virtual protected] bool QStyleKitStyle::event(QEvent *event)
QObject::event(QEvent *e) を再実装します。
[override virtual protected] bool QStyleKitStyle::eventFilter(QObject *obj, QEvent *event)
QObject::eventFilter(QObject *watched, QEvent *event) を再実装します。
[override virtual] QStyle::SubControl QStyleKitStyle::hitTestComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *w = nullptr) const
QCommonStyle::hitTestComplexControl (QStyle::ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *widget)const を再実装します。
[override virtual] int QStyleKitStyle::pixelMetric(QStyle::PixelMetric m, const QStyleOption *opt = nullptr, const QWidget *widget = nullptr) const
QCommonStyle::pixelMetric (QStyle::PixelMetric m, const QStyleOption *opt, const QWidget *widget)const を再実装します。
[override virtual] void QStyleKitStyle::polish(QApplication *app)
QCommonStyle::polish(QApplication *app) を再実装します。
[override virtual] void QStyleKitStyle::polish(QPalette &palette)
QCommonStyle::polish (QPalette および pal)を再実装しています。
[override virtual] void QStyleKitStyle::polish(QWidget *widget)
QCommonStyle::polish(QWidget *widget) を再実装します。
void QStyleKitStyle::setStylePath(const QString &filePath)
filePath にある QML ファイル「Style 」を読み込み、すべてのウィジェットに適用します。
filePath は、ローカルファイルへのパス、またはリソースファイルシステム内のファイルへのパスです。許容される形式については、stylePath プロパティを参照してください。これが現在のstylePath と同じ場合、この関数は何も行いません。新しいスタイルを読み込めない場合、以前に読み込まれたスタイルが有効なままとなり、警告が出力されます。ただし、プロパティ値の変更を反映するために、stylePathChanged() は依然として呼び出されます。
注: プロパティ `stylePath`のセッター 関数です。
stylePath()も参照してください 。
void QStyleKitStyle::setThemeName(const QString &themeName)
「themeName 」という名前のテーマを有効にします。
themeName 引数は、availableThemeNames() 内のエントリのいずれか、またはプラットフォームの配色に従うための特別な名前System でなければなりません。Style が読み込まれていない場合、この関数は警告を出力し、アクティブなテーマを変更せずに戻ります。
注: プロパティthemeName のセッター 関数です。
themeName() およびavailableThemeNames()も参照してください 。
[override virtual] QSize QStyleKitStyle::sizeFromContents(QStyle::ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *widget = nullptr) const
QCommonStyle::sizeFromContents (QStyle::ContentsType contentsType, const QStyleOption *opt, const QSize &contentsSize, const QWidget *widget)const を再実装します。
[override virtual] QPalette QStyleKitStyle::standardPalette() const
QStyle::standardPalette() const を再実装します。
[override virtual] int QStyleKitStyle::styleHint(QStyle::StyleHint sh, const QStyleOption *opt = nullptr, const QWidget *w = nullptr, QStyleHintReturn *shret = nullptr) const
QCommonStyle::styleHint (QStyle::StyleHint sh, const QStyleOption *opt, const QWidget *widget, QStyleHintReturn *hret)const を再実装します。
QString QStyleKitStyle::stylePath() const
現在読み込まれているStyle ファイルのパスを返します。
注: stylePath プロパティのゲッター 関数です。
関連項目 :setStylePath()
[override virtual] QRect QStyleKitStyle::subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *w = nullptr) const
QCommonStyle::subControlRect (QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *widget)const を再実装します。
[override virtual] QRect QStyleKitStyle::subElementRect(QStyle::SubElement r, const QStyleOption *opt, const QWidget *widget = nullptr) const
QCommonStyle::subElementRect (QStyle::SubElement sr, const QStyleOption *opt, const QWidget *widget) const)を再実装します。
QString QStyleKitStyle::themeName() const
現在アクティブなテーマの名前を返します。Style が読み込まれていない場合は、空の文字列を返します。
注: プロパティ themeNameのゲッター関数です 。
関連項目: setThemeName() およびavailableThemeNames()。
[override virtual] void QStyleKitStyle::unpolish(QApplication *app)
QCommonStyle::unpolish(QApplication *application) を再実装します。
[override virtual] void QStyleKitStyle::unpolish(QWidget *widget)
QCommonStyle::unpolish(QWidget *widget) を再実装します。
© 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.