QProxyStyle Class

QProxyStyle クラスは、QStyle 要素の動的なオーバーライドを簡素化する便利なクラスです。詳細...

Header: #include <QProxyStyle>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Inherits: 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 (通常はデフォルトのシステムスタイル)をラップします。

次の例では、どのプラットフォームでもショートカットの下線の動作をオーバーライドする方法を示します:

#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 stylesQStyle::proxy() を呼び出すため、このヒントを尊重しますが、ユーザー定義スタイルやシステム制御スタイルに対してQStyle::proxy() が呼び出される保証はありません。例えば、メニューがオペレーティング・システムによって処理されるMacでは動作しないでしょう。

特定のウィジェットのみにプロキシ・スタイルを設定する場合は、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 、またはstyle が指定されていない場合はデフォルトのネイティブstyle の動作をオーバーライドするための QProxyStyle オブジェクトを構築します。

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。

このスロットは layoutSpacing() によって呼び出され、レイアウト内でcontrol1control2 の間に使用されるべき間隔を決定します。orientation は、コントロールを横に並べるか、縦に重ねるかを指定します。option パラメータは、親ウィジェットに関する追加情報を渡すために使用できます。widget パラメータはオプションで、optionnullptr の場合にも使用できます。

デフォルトの実装は -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)

再リンプルメント: (QPalette &pal):QCommonStyle::polish(QWidget *widget)。

void QProxyStyle::setBaseStyle(QStyle *style)

プロキシされる基本スタイルを設定します。

style の所有権はQProxyStyle に移譲される。

スタイルが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)。

©2024 The Qt Company Ltd. 本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。