QProxyStyle 类
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 &) 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上不会工作,因为菜单由操作系统处理。
当需要在特定小部件上设置代理样式时,必须确保不要在由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,则在默认的本 địa style。
style的所有权被转移到QProxyStyle。
QProxyStyle::QProxyStyle(const QString &key)
构建一个QProxyStyle对象,以覆盖由样式key指定的基本样式,如果没有指定样式key,则在每个当前application style。
另请参阅QStyleFactory::create().
[虚拟 noexcept]
QProxyStyle::~QProxyStyle()
销毁QProxyStyle对象。
QStyle *QProxyStyle::baseStyle() const
返回代理基本样式对象。如果在代理样式中未设置基本样式,QProxyStyle 将创建应用程序样式的实例。
另请参阅setBaseStyle() 和 QStyle。
[重写虚函数]
void QProxyStyle::drawComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = nullptr) const
[重写虚函数]
void QProxyStyle::drawControl(QStyle::ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const
[重写虚函数]
void QProxyStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const
[重写虚函数]
void QProxyStyle::drawItemText(QPainter *painter, const QRect &rect, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const
[重写虚函数]
void QProxyStyle::drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const
[重写虚函数]
bool QProxyStyle::event(QEvent *e)
重实现:QObject::event(QEvent *e)。
[重载虚函数]
QPixmap QProxyStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const
[重载虚函数]
QStyle::SubControl QProxyStyle::hitTestComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, const QPoint &pos, const QWidget *widget = nullptr) const
[重载虚函数]
QRect QProxyStyle::itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const
重实现:QStyle::itemPixmapRect(const QRect &rectangle, int alignment, const QPixmap &pixmap) const。
[重载虚函数]
QRect QProxyStyle::itemTextRect(const QFontMetrics &fm, const QRect &r, int flags, bool enabled, const QString &text) const
[重载虚函数]
int QProxyStyle::layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const
此槽由 layoutSpacing() 调用,以确定在布局中应在 control1 和 control2 之间使用的间隔。 orientation 指定控件是并排布局还是垂直堆叠。可以使用 option 参数传递有关父窗口的额外信息。 widget 参数是可选的,如果 option 为 nullptr
,则也可以使用。
默认实现返回 -1。
[覆盖虚函数]
int QProxyStyle::pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const
[覆盖虚函数]
void QProxyStyle::polish(QWidget *widget)
重新实现:QCommonStyle::polish(QWidget *widget).
[覆盖虚函数]
void QProxyStyle::polish(QPalette &pal)
重新实现:QCommonStyle::polish(QPalette &pal).
[覆盖虚函数]
void QProxyStyle::polish(QApplication *app)
重新实现:QCommonStyle::polish(QApplication *app).
void QProxyStyle::setBaseStyle(QStyle *style)
设置要代理的基本样式。
对 style 的所有权转移给了 QProxyStyle。
如果 nullptr
,将自动分配依赖桌面风格的样式。
另请参阅baseStyle().
[覆盖虚函数]
QSize QProxyStyle::sizeFromContents(QStyle::ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const
[覆盖虚函数]
QIcon QProxyStyle::standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option = nullptr, const QWidget *widget = nullptr) const
返回给定 standardIcon 的图标。
在 QStyle 的子类中重新实现此槽函数以提供您自己的图标。可以使用 option 参数传递找到适当图标所需的信息。可选的 widget 参数也可以用来帮助找到图标。
[覆盖虚函数]
QPalette QProxyStyle::standardPalette() const
重新实现:QStyle::standardPalette() const.
[重写虚函数]
QPixmap QProxyStyle::standardPixmap(QStyle::StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget = nullptr) const
[重写虚函数]
int QProxyStyle::styleHint(QStyle::StyleHint hint, const QStyleOption *option = nullptr, const QWidget *widget = nullptr, QStyleHintReturn *returnData = nullptr) const
[重写虚函数]
QRect QProxyStyle::subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *option, QStyle::SubControl sc, const QWidget *widget) const
[重写虚函数]
QRect QProxyStyle::subElementRect(QStyle::SubElement element, const QStyleOption *option, const QWidget *widget) const
[重写虚函数]
void QProxyStyle::unpolish(QWidget *widget)
重新实现: QCommonStyle::unpolish(QWidget *widget).
[重写虚函数]
void QProxyStyle::unpolish(QApplication *app)
© 2024 The Qt Company Ltd. 本文档中包含的贡献均为各自所有者的版权。本文档受GNU自由文档许可证版本1.3的条款许可,由自由软件基金会发布。Qt和相应的徽标是芬兰及全球其他地区的The Qt Company Ltd的商标。所有其他商标均为各自所有者的财产。