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 (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 对象为覆写行为按指定 style ,或按默认本机 style if style 未指定。
所有权对于 style 会被转移给 QProxyStyle。
构造 QProxyStyle 对象为覆写行为按基样式指定通过样式 key ,或按当前 应用程序样式 若指定样式 key 无法识别。
另请参阅 QStyleFactory::create ().
[虚拟]
QProxyStyle::
~QProxyStyle
()
销毁 QProxyStyle 对象。
返回代理基样式对象。若代理样式未设置基样式, QProxyStyle 将创建实例化的应用程序样式取而代之。
另请参阅 setBaseStyle () 和 QStyle .
[override virtual]
void
QProxyStyle::
drawComplexControl
(
QStyle::ComplexControl
control
, const
QStyleOptionComplex
*
option
,
QPainter
*
painter
, const
QWidget
*
widget
= nullptr) const
[override virtual]
void
QProxyStyle::
drawControl
(
QStyle::ControlElement
element
, const
QStyleOption
*
option
,
QPainter
*
painter
, const
QWidget
*
widget
= nullptr) const
[override virtual]
void
QProxyStyle::
drawItemPixmap
(
QPainter
*
painter
, const
QRect
&
rect
,
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
[override virtual]
void
QProxyStyle::
drawPrimitive
(
QStyle::PrimitiveElement
element
, const
QStyleOption
*
option
,
QPainter
*
painter
, const
QWidget
*
widget
= nullptr) 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
[override virtual]
QStyle::SubControl
QProxyStyle::
hitTestComplexControl
(
QStyle::ComplexControl
control
, const
QStyleOptionComplex
*
option
, const
QPoint
&
pos
, const
QWidget
*
widget
= nullptr) 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
[override virtual]
int
QProxyStyle::
layoutSpacing
(
QSizePolicy::ControlType
control1
,
QSizePolicy::ControlType
control2
,
Qt::Orientation
orientation
, const
QStyleOption
*
option
= nullptr, const
QWidget
*
widget
= nullptr) 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
[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).
设置应被代理的基样式。
所有权对于 style 会被转移给 QProxyStyle .
若样式为
nullptr
,将自动赋值桌面从属样式。
另请参阅 baseStyle ().
[override virtual]
QSize
QProxyStyle::
sizeFromContents
(
QStyle::ContentsType
type
, const
QStyleOption
*
option
, const
QSize
&
size
, const
QWidget
*
widget
) const
[override virtual]
QIcon
QProxyStyle::
standardIcon
(
QStyle::StandardPixmap
standardIcon
, const
QStyleOption
*
option
= nullptr, const
QWidget
*
widget
= nullptr) 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
[override virtual]
int
QProxyStyle::
styleHint
(
QStyle::StyleHint
hint
, const
QStyleOption
*
option
= nullptr, const
QWidget
*
widget
= nullptr,
QStyleHintReturn
*
returnData
= nullptr) const
[override virtual]
QRect
QProxyStyle::
subControlRect
(
QStyle::ComplexControl
cc
, const
QStyleOptionComplex
*
option
,
QStyle::SubControl
sc
, const
QWidget
*
widget
) const
[override virtual]
QRect
QProxyStyle::
subElementRect
(
QStyle::SubElement
element
, const
QStyleOption
*
option
, 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).