QProxyStyle Class
QProxyStyle クラスは、QStyle 要素の動的な上書きを簡略化する便利なクラスです。詳細...
| ヘッダー: | #include <QProxyStyle> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 継承元: | QCommonStyle |
パブリック関数
| QProxyStyle(QStyle *style = nullptr) | |
| QProxyStyle(const QString &key) | |
| virtual | ~QProxyStyle() |
| QStyle * | baseStyle() const |
| void | setBaseStyle(QStyle *style) |
再実装されたパブリック関数
| virtual void | drawComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = nullptr) const override |
| virtual void | drawControl(QStyle::ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const override |
| virtual void | drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const override |
| virtual void | drawItemText(QPainter *painter, const QRect &rect, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const override |
| virtual void | drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const override |
| virtual QPixmap | generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const override |
| virtual QStyle::SubControl | hitTestComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, const QPoint &pos, const QWidget *widget = nullptr) const override |
| virtual QRect | itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const override |
| virtual QRect | itemTextRect(const QFontMetrics &fm, const QRect &r, int flags, bool enabled, const QString &text) const override |
| virtual int | layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const override |
| virtual int | pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const override |
| virtual void | polish(QApplication *app) override |
| virtual void | polish(QPalette &pal) override |
| virtual void | polish(QWidget *widget) override |
| virtual QSize | sizeFromContents(QStyle::ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const override |
| virtual QIcon | standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const override |
| virtual QPalette | standardPalette() const override |
| virtual QPixmap | standardPixmap(QStyle::StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget = nullptr) const override |
| virtual int | styleHint(QStyle::StyleHint hint, const QStyleOption *option = nullptr, const QWidget *widget = nullptr, QStyleHintReturn *returnData = nullptr) const override |
| virtual QRect | subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *option, QStyle::SubControl sc, const QWidget *widget) const override |
| virtual QRect | subElementRect(QStyle::SubElement element, const QStyleOption *option, const QWidget *widget) const override |
| virtual void | unpolish(QApplication *app) override |
| virtual void | unpolish(QWidget *widget) override |
再実装されたプロテクトされた関数
| virtual bool | event(QEvent *e) override |
詳細な説明
QProxyStyleは、描画やその他の特定のスタイル動作を動的に上書きする目的で、QStyle (通常はデフォルトのシステムスタイル)をラップします。これは、本番アプリケーションでプラットフォームのスタイルを調整するための推奨される方法です。詳細は、「Qt Widgets のスタイル設定手法」を参照してください。
以下の例は、どのプラットフォームでもショートカットのアンダーライン動作をオーバーライドする方法を示しています:
#include "textedit.h"
#include <QApplication>
#include <QProxyStyle>
class MyProxyStyle : public QProxyStyle
{
public:
int styleHint(StyleHint hint, const QStyleOption *option = nullptr,
const QWidget *widget = nullptr, QStyleHintReturn *returnData = nullptr) const override
{
if (hint == QStyle::SH_UnderlineShortcut)
return 0;
return QProxyStyle::styleHint(hint, option, widget, returnData);
}
};
int main(int argc, char **argv)
{
Q_INIT_RESOURCE(textedit);
QApplication a(argc, argv);
a.setStyle(new MyProxyStyle);
TextEdit mw;
mw.resize(700, 800);
mw.show();
//...
}警告:Qtが提供するcommon styles はQStyle::proxy()を呼び出すため、このヒントを反映しますが、ユーザー定義またはシステム制御のスタイルにおいてQStyle::proxy()が呼び出される保証はありません。例えば、メニューがオペレーティングシステムによって処理されるmacOSでは機能しません。
プロキシスタイルを特定のウィジェットのみに設定する場合は、QWidget::style() によって返されるグローバルなアプリケーションスタイルに対してプロキシを設定しないように注意する必要があります。次のように、そのウィジェット用に個別のカスタムスタイルを作成する必要があります。
...
auto proxy = new MyProxyStyle(QApplication::style()->name());
proxy->setParent(widget); // take ownership to avoid memleak
widget->setStyle(proxy);
...QStyleも参照してください 。
メンバ関数のドキュメント
QProxyStyle::QProxyStyle(QStyle *style = nullptr)
指定されたstyle の挙動を上書きするためのQProxyStyleオブジェクトを生成します。style が指定されていない場合は、デフォルトのネイティブstyle の挙動を上書きします。
style の所有権は QProxyStyle に移管されます。
QProxyStyle::QProxyStyle(const QString &key)
stylekey で指定されたベーススタイル、または指定されたスタイルkey が認識されない場合は現在のapplication style の動作を上書きするための QProxyStyle オブジェクトを作成します。
QStyleFactory::create()も参照してください 。
[virtual noexcept] QProxyStyle::~QProxyStyle()
QProxyStyle オブジェクトを破棄します。
QStyle *QProxyStyle::baseStyle() const
プロキシのベーススタイルオブジェクトを返します。プロキシスタイルにベーススタイルが設定されていない場合、QProxyStyle は代わりにアプリケーションスタイルのインスタンスを作成します。
setBaseStyle() およびQStyleも参照してください 。
[override virtual] void QProxyStyle::drawComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = nullptr) const
QCommonStyle::drawComplexControl (QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget)const を再実装します。
[override virtual] void QProxyStyle::drawControl(QStyle::ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const
QCommonStyle::drawControl (QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *widget)const を再実装します。
[override virtual] void QProxyStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const
QStyle::drawItemPixmap (QPainter *painter, const QRect &rectangle, int alignment, const QPixmap &pixmap)const の再実装です。
[override virtual] void QProxyStyle::drawItemText(QPainter *painter, const QRect &rect, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const
QStyle::drawItemText(QPainter *painter, const QRect &rectangle, int alignment, const QPalette &palette, bool enabled, const QString &text, QPalette::ColorRole textRole) const を再実装します。
[override virtual] void QProxyStyle::drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const
QCommonStyle::drawPrimitive (QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *widget)const を再実装します。
[override virtual protected] bool QProxyStyle::event(QEvent *e)
QObject::event(QEvent *e) を再実装します。
[override virtual] QPixmap QProxyStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const
QCommonStyle::generatedIconPixmap (QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt)const を再実装しています。
[override virtual] QStyle::SubControl QProxyStyle::hitTestComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, const QPoint &pos, const QWidget *widget = nullptr) const
QCommonStyle::hitTestComplexControl (QStyle::ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *widget)const を再実装します。
[override virtual] QRect QProxyStyle::itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const
QStyle::itemPixmapRect(const QRect &rectangle, int alignment, const QPixmap &pixmap) const を再実装します。
[override virtual] QRect QProxyStyle::itemTextRect(const QFontMetrics &fm, const QRect &r, int flags, bool enabled, const QString &text) const
QStyle::itemTextRect(const QFontMetrics &metrics, const QRect &rectangle, int alignment, bool enabled, const QString &text) const を再実装します。
[override virtual] int QProxyStyle::layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const
QCommonStyle::layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option, const QWidget *widget) const を再実装します。
このスロットは、レイアウト内で `control1 ` と `control2 ` の間に使用する間隔を決定するために、`layoutSpacing()` によって呼び出されます。`orientation ` は、コントロールが横並びに配置されるか、縦に積み重ねられるかを指定します。`option ` パラメータは、親ウィジェットに関する追加情報を渡すために使用できます。`widget ` パラメータはオプションであり、`option ` が `nullptr` の場合にも使用できます。
デフォルトの実装では -1 を返します。
combinedLayoutSpacing()も参照してください 。
[override virtual] int QProxyStyle::pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const
QCommonStyle::pixelMetric (QStyle::PixelMetric m, const QStyleOption *opt, const QWidget *widget)const を再実装します。
[override virtual] void QProxyStyle::polish(QApplication *app)
QCommonStyle::polish(QApplication *app) を再実装します。
[override virtual] void QProxyStyle::polish(QPalette &pal)
QCommonStyle::polish (QPalette および pal)を再実装しています。
[override virtual] void QProxyStyle::polish(QWidget *widget)
QCommonStyle::polish(QWidget *widget) を再実装します。
void QProxyStyle::setBaseStyle(QStyle *style)
プロキシされるべき基本スタイルを設定します。
style の所有権はQProxyStyle に移行されます。
style がnullptr の場合、デスクトップに依存するスタイルが自動的に割り当てられます。
baseStyle()も参照してください 。
[override virtual] QSize QProxyStyle::sizeFromContents(QStyle::ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const
QCommonStyle::sizeFromContents (QStyle::ContentsType contentsType, const QStyleOption *opt, const QSize &contentsSize, const QWidget *widget)const を再実装します。
[override virtual] QIcon QProxyStyle::standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const
QStyle::standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const を再実装します。
指定されたstandardIcon に対応するアイコンを返します。
QStyle のサブクラスで独自のアイコンを提供するには、このスロットを再実装してください。引数 `option ` を使用すると、適切なアイコンを見つけるために必要な追加情報を渡すことができます。引数 `widget ` はオプションですが、アイコンの検索に役立てることもできます。
[override virtual] QPalette QProxyStyle::standardPalette() const
QStyle::standardPalette() const を再実装します。
[override virtual] QPixmap QProxyStyle::standardPixmap(QStyle::StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget = nullptr) const
QCommonStyle::standardPixmap (QStyle::StandardPixmap sp, const QStyleOption *option, const QWidget *widget)const を再実装します。
[override virtual] int QProxyStyle::styleHint(QStyle::StyleHint hint, const QStyleOption *option = nullptr, const QWidget *widget = nullptr, QStyleHintReturn *returnData = nullptr) const
QCommonStyle::styleHint (QStyle::StyleHint sh, const QStyleOption *opt, const QWidget *widget, QStyleHintReturn *hret)const を再実装します。
[override virtual] QRect QProxyStyle::subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *option, QStyle::SubControl sc, const QWidget *widget) const
QCommonStyle::subControlRect (QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *widget)const を再実装します。
[override virtual] QRect QProxyStyle::subElementRect(QStyle::SubElement element, const QStyleOption *option, const QWidget *widget) const
QCommonStyle::subElementRect (QStyle::SubElement sr, const QStyleOption *opt, const QWidget *widget)const を再実装します。
[override virtual] void QProxyStyle::unpolish(QApplication *app)
QCommonStyle::unpolish(QApplication *application) を再実装しています。
[override virtual] void QProxyStyle::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.