En esta página

QProxyStyle Class

La clase QProxyStyle es una clase de conveniencia que simplifica la sobreescritura dinámica de elementos QStyle. Más...

Cabecera: #include <QProxyStyle>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Hereda: QCommonStyle

Funciones Públicas

QProxyStyle(QStyle *style = nullptr)
QProxyStyle(const QString &key)
virtual ~QProxyStyle()
QStyle *baseStyle() const
void setBaseStyle(QStyle *style)

Funciones públicas reimplementadas

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

Funciones protegidas reimplementadas

virtual bool event(QEvent *e) override

Descripción Detallada

Un QProxyStyle envuelve un QStyle (usualmente el estilo por defecto del sistema) con el propósito de sobreescribir dinámicamente el pintado u otro comportamiento específico del estilo.

El siguiente ejemplo muestra cómo anular el comportamiento del subrayado de acceso directo en cualquier plataforma:

#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();
    //...
}

Advertencia: Los common styles proporcionados por Qt respetarán esta sugerencia, porque llaman a QStyle::proxy(), pero no hay garantía de que se llame a QStyle::proxy() para estilos definidos por el usuario o controlados por el sistema. No funcionaría en un Mac, por ejemplo, donde los menús son manejados por el sistema operativo.

Cuando un estilo proxy debe establecerse sólo en un widget específico, tienes que asegurarte de no establecer el proxy en el estilo global de la aplicación que es devuelto por QWidget::style(). Tienes que crear un estilo personalizado separado para el widget similar a:

...
auto proxy = new MyProxyStyle(QApplication::style()->name());
proxy->setParent(widget);   // take ownership to avoid memleak
widget->setStyle(proxy);
...

Véase también QStyle.

Documentación de las funciones miembro

QProxyStyle::QProxyStyle(QStyle *style = nullptr)

Construye un objeto QProxyStyle para anular el comportamiento en el style especificado, o en el style nativo por defecto si no se especifica style.

La propiedad de style se transfiere a QProxyStyle.

QProxyStyle::QProxyStyle(const QString &key)

Construye un objeto QProxyStyle para sobreescribir el comportamiento en el estilo base especificado por style key, o en el actual application style si el estilo especificado key no es reconocido.

Ver también QStyleFactory::create().

[virtual noexcept] QProxyStyle::~QProxyStyle()

Destruye el objeto QProxyStyle.

QStyle *QProxyStyle::baseStyle() const

Devuelve el objeto de estilo base del proxy. Si no se establece ningún estilo base en el estilo proxy, QProxyStyle creará una instancia del estilo de la aplicación en su lugar.

Véase también setBaseStyle() y QStyle.

[override virtual] void QProxyStyle::drawComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = nullptr) const

Reimplementa: 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

Reimplementa: 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

Reimplementa: 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

Reimplementa: 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

Reimplementa: QCommonStyle::drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *widget) const.

[override virtual protected] bool QProxyStyle::event(QEvent *e)

Reimplementa: QObject::event(QEvent *e).

[override virtual] QPixmap QProxyStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const

Reimplementa: 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

Reimplementa: 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

Reimplementa: 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

Reimplementa: 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

Reimplementa: QCommonStyle::layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option, const QWidget *widget) const.

Este slot es llamado por layoutSpacing() para determinar el espaciado que debe usarse entre control1 y control2 en un layout. orientation especifica si los controles se disponen uno al lado del otro o apilados verticalmente. El parámetro option puede utilizarse para pasar información adicional sobre el widget padre. El parámetro widget es opcional y también puede utilizarse si option es nullptr.

La implementación por defecto devuelve -1.

Véase también combinedLayoutSpacing().

[override virtual] int QProxyStyle::pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const

Reimplementa: QCommonStyle::pixelMetric(QStyle::PixelMetric m, const QStyleOption *opt, const QWidget *widget) const.

[override virtual] void QProxyStyle::polish(QApplication *app)

Reimplementa: QCommonStyle::polish(QApplication *app).

[override virtual] void QProxyStyle::polish(QPalette &pal)

Reimplementa: QCommonStyle::polish(QPalette &pal).

[override virtual] void QProxyStyle::polish(QWidget *widget)

Reimplementa: QCommonStyle::polish(QWidget *widget).

void QProxyStyle::setBaseStyle(QStyle *style)

Establece el estilo base que debe ser proxyado.

La propiedad de style se transfiere a QProxyStyle.

Si el estilo es nullptr, se asignará automáticamente un estilo dependiente del escritorio.

Véase también baseStyle().

[override virtual] QSize QProxyStyle::sizeFromContents(QStyle::ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const

Reimplementa: 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

Reimplementa: QStyle::standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const.

Devuelve un icono para la dirección standardIcon.

Reimplemente esta ranura para proporcionar sus propios iconos en una subclase de QStyle. El argumento option puede usarse para pasar información extra necesaria para encontrar el icono apropiado. El argumento widget es opcional y también puede utilizarse para ayudar a encontrar el icono.

[override virtual] QPalette QProxyStyle::standardPalette() const

Reimplementa: QStyle::standardPalette() const.

[override virtual] QPixmap QProxyStyle::standardPixmap(QStyle::StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget = nullptr) const

Reimplementa: 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

Reimplementa: 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

Reimplementa: 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

Reimplementa: QCommonStyle::subElementRect(QStyle::SubElement sr, const QStyleOption *opt, const QWidget *widget) const.

[override virtual] void QProxyStyle::unpolish(QApplication *app)

Reimplementa: QCommonStyle::unpolish(QApplication *aplicación).

[override virtual] void QProxyStyle::unpolish(QWidget *widget)

Reimplementa: 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.