이 페이지에서

QProxyStyle Class

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(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 (일반적으로 기본 시스템 스타일)을 감싸는 역할을 합니다. 이는 실제 애플리케이션에서 플랫폼 스타일을 조정하는 데 권장되는 방법입니다. 자세한 내용은 Qt Widgets 의 ‘스타일링 접근 방식’을 참조하십시오.

다음 예제는 모든 플랫폼에서 단축키 밑줄 동작을 재정의하는 방법을 보여줍니다:

#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 XML에서 제공하는 common styles 는 QStyle::proxy()를 호출하므로 이 힌트를 따르지만, 사용자 정의 스타일이나 시스템 제어 스타일의 경우 QStyle::proxy()가 호출된다는 보장은 없습니다. 예를 들어, 메뉴가 운영 체제에서 처리되는 macOS에서는 작동하지 않을 수 있습니다.

프로xy 스타일을 특정 위젯에만 설정해야 하는 경우, QWidget::style()에서 반환되는 전역 애플리케이션 스타일에 프로xy를 설정하지 않도록 주의해야 합니다. 다음과 같이 해당 위젯을 위한 별도의 사용자 정의 스타일을 생성해야 합니다:

...
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 가 지정되지 않은 경우 기본 네이티브 style 에서 재정의하기 위한 객체를 생성합니다.

style 의 소유권이 QProxyStyle로 이전됩니다.

QProxyStyle::QProxyStyle(const QString &key)

style key 로 지정된 기본 스타일의 동작을 재정의하기 위한 QProxyStyle 객체를 생성합니다. 단, 지정된 스타일 key 이 인식되지 않는 경우 현재 application style 의 동작을 재정의합니다.

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 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 과 control2 사이에 사용될 간격을 결정합니다. orientation 는 컨트롤이 나란히 배치될지, 아니면 수직으로 쌓일지를 지정합니다. option 매개변수는 부모 위젯에 대한 추가 정보를 전달하는 데 사용할 수 있습니다. widget 매개변수는 선택 사항이며, option 가 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(QApplication *app)

QCommonStyle::polish(QApplication *app)를 재구현합니다.

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

QCommonStyle::polish(QPalette 및 &pal)을 재구현합니다.

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

QCommonStyle::polish(QWidget *widget)을 재구현합니다.

void QProxyStyle::setBaseStyle(QStyle *style)

프록시 처리해야 할 기본 스타일을 설정합니다.

style 의 소유권이 QProxyStyle 로 이전됩니다.

style이 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 *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(QApplication *app)

QCommonStyle::unpolish(QApplication *application)을 재구현합니다.

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

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.