QProxyStyle 类

QProxyStyle 类是方便类为简化动态覆盖 QStyle 元素。 更多...

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

公共函数

  QProxyStyle (const QString & key )
  QProxyStyle (QStyle * style = nullptr)
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 (QWidget * widget ) override
virtual void polish (QPalette & pal ) override
virtual void polish (QApplication * app ) 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 (QWidget * widget ) override
virtual void unpolish (QApplication * app ) 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 提供将遵守此提示,因为它们会调用 QStyle::proxy (),但不保证 QStyle::proxy () 会被调用对于用户定义 (或系统控制) 样式。例如:在 Mac 它不工作,因为菜单是由操作系统处理的。

When a proxy style should be set on a specific widget only, you have to make sure to not set the proxy on the global application style which is returned by QWidget::style (). You have to create a separate custom style for the widget similar to:

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

另请参阅 QStyle .

成员函数文档编制

QProxyStyle:: QProxyStyle (const QString & key )

构造 QProxyStyle 对象为覆写行为按基样式指定通过样式 key ,或按当前 应用程序样式 若指定样式 key 无法识别。

另请参阅 QStyleFactory::create ().

QProxyStyle:: QProxyStyle ( QStyle * style = nullptr)

构造 QProxyStyle 对象为覆写行为按指定 style ,或按默认本机 style if style 未指定。

所有权对于 style 会被转移给 QProxyStyle。

[虚拟] 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() 调用,以确定应该使用的间距介于 control1 and control2 在布局。 orientation 指定控件是并排布局,还是垂直堆叠。 option 参数可以用于传递父级 Widget 的有关额外信息。 widget 参数是可选的,且也可以使用若 option is 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 ( QWidget * widget )

重实现: QCommonStyle::polish (QWidget *widget).

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

重实现: QCommonStyle::polish (QPalette &pal).

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

重实现: QCommonStyle::polish (QApplication *app).

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 ct, const QStyleOption *opt, const QSize &csz, 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 ( QWidget * widget )

重实现: QCommonStyle::unpolish (QWidget *widget).

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

重实现: QCommonStyle::unpolish (QApplication *application).