QProxyStyle Class

QProxyStyle 클래스는 QStyle 요소의 동적 재정의 작업을 간소화하는 편의 클래스입니다. 더 보기...

Header: #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(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)

스타일 key 으로 지정된 기본 스타일 또는 지정된 스타일 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 Q스타일 옵션 컴플렉스 *옵트, Q페인터 *p, const Q위젯 *위젯) const.

[override virtual] void QProxyStyle::drawControl(QStyle::ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const

재 구현합니다: QCommonStyle::drawControl(Q스타일::컨트롤 엘리먼트 엘리먼트, const Q스타일 옵션 *옵트, Q페인터 *p, const Q위젯 *위젯) const.

[override virtual] void QProxyStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const

재구현합니다: QStyle::drawItemPixmap(QPainter *페인터, 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(Q스타일::프리미티브 엘리먼트 pe, const Q스타일 옵션 *옵트, Q페인터 *p, const Q위젯 *위젯) 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 Q스타일 옵션 컴플렉스 *옵트, const Q포인트 &pt, const Q위젯 *위젯) 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.

이 슬롯은 레이아웃에서 control1control2 사이에 사용해야 하는 간격을 결정하기 위해 layoutSpacing()에 의해 호출됩니다. 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(Q스타일::픽셀메트릭 m, const Q스타일옵션 *옵트, const Q위젯 *위젯) const.

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

다시 구현합니다: QCommonStyle::polish(QApplication *앱).

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

다시 구현합니다: QCommonStyle::polish(Q팔레트 &pal).

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

다시 구현합니다: QCommonStyle::polish(QWidget *위젯).

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 *옵션, const QWidget *위젯) 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(Q스타일::스탠다드픽스맵 sp, const Q스타일옵션 *옵션, const Q위젯 *위젯) 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 *옵트, const QWidget *위젯, 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(Q스타일::서브 엘리먼트 sr, const Q스타일 옵션 *옵트, const Q위젯 *위젯) const.

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

다시 구현합니다: QCommonStyle::unpolish(Q애플리케이션 *애플리케이션).

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

다시 구현합니다: QCommonStyle::unpolish(QWidget *위젯).

© 2025 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.