Spec-Zone.ru › Qt 6.1

Класс 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, где меню обрабатываются операционной системой.

Если стиль прокси должен быть установлен только на определённом виджете, необходимо убедиться, что прокси не устанавливается в глобальный стиль приложения, который возвращается методом QWidget::style(). Необходимо создать отдельный пользовательский стиль для виджета, аналогично:

...
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 не указан.

Владение объектом style передаётся QProxyStyle.

[virtual] 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(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.

Если 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 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).

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qproxystyle.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API