• QStyleOption类型


    QStyleOption 及其子类包含QStyle函数绘制图形元素所需的所有信息。

    class Q_WIDGETS_EXPORT QStyleOption
    {
    public:
        enum OptionType {
                          SO_Default, SO_FocusRect, SO_Button, SO_Tab, SO_MenuItem,
                          SO_Frame, SO_ProgressBar, SO_ToolBox, SO_Header,
                          SO_DockWidget, SO_ViewItem, SO_TabWidgetFrame,
                          SO_TabBarBase, SO_RubberBand, SO_ToolBar, SO_GraphicsItem,
    
                          SO_Complex = 0xf0000, SO_Slider, SO_SpinBox, SO_ToolButton, SO_ComboBox,
                          SO_TitleBar, SO_GroupBox, SO_SizeGrip,
    
                          SO_CustomBase = 0xf00,
                          SO_ComplexCustomBase = 0xf000000
                        };
    
        enum StyleOptionType { Type = SO_Default };
        enum StyleOptionVersion { Version = 1 };
    
        int version;
        int type;
        QStyle::State state;
        Qt::LayoutDirection direction;
        QRect rect;
        QFontMetrics fontMetrics;
        QPalette palette;
        QObject *styleObject;
    
        QStyleOption(int version = QStyleOption::Version, int type = SO_Default);
        QStyleOption(const QStyleOption &other);
        ~QStyleOption();
    
        void init(const QWidget *w);
        inline void initFrom(const QWidget *w) { init(w); }
        QStyleOption &operator=(const QStyleOption &other);
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    派生类

    QStyleOptionButton、QStyleOptionComplex、QStyleOptionDockWidget、QStyleOptionFocusRect、QStyleOptionFrame、QStyleOptionGraphicsItem、QStyleOptionHeader、QStyleOptionMenuItem、QStyleOptionProgressBar、QStyleOptionRubberBand、QStyleOptionTab、QStyleOptionTabBarBase、QStyleOptionTabWidgetFrame、QStyleOptionToolBar、QStyleOptionToolBox和QStyleOptionViewItem

    枚举 QStyleOption:: OptionType

    此枚举由QStyleOption、其子类和qstyleoption_cast () 内部使用,以确定样式选项的类型。一般来说,除非您想创建自己的QStyleOption子类和自己的样式,否则您无需担心这一点。

    ConstantValueDescription
    QStyleOption::SO_ButtonQStyleOptionButton
    QStyleOption::SO_ComboBoxQStyleOptionComboBox
    QStyleOption::SO_ComplexQStyleOptionComplex
    QStyleOption::SO_DefaultQStyleOption
    QStyleOption::SO_DockWidgetQStyleOptionDockWidget
    QStyleOption::SO_FocusRectQStyleOptionFocusRect
    QStyleOption::SO_GraphicsItemQStyleOptionGraphicsItem
    QStyleOption::SO_GroupBoxQStyleOptionGroupBox
    QStyleOption::SO_HeaderQStyleOptionHeader
    QStyleOption::SO_MenuItemQStyleOptionMenuItem
    QStyleOption::SO_ProgressBarQStyleOptionProgressBar
    QStyleOption::SO_RubberBandQStyleOptionRubberBand
    QStyleOption::SO_SizeGripQStyleOptionSizeGrip
    QStyleOption::SO_SliderQStyleOptionSlider
    QStyleOption::SO_SpinBoxQStyleOptionSpinBox
    QStyleOption::SO_TabQStyleOptionTab
    QStyleOption::SO_TabBarBaseQStyleOptionTabBarBase
    QStyleOption::SO_TabWidgetFrameQStyleOptionTabWidgetFrame
    QStyleOption::SO_TitleBarQStyleOptionTitleBar
    QStyleOption::SO_ToolBarQStyleOptionToolBar
    QStyleOption::SO_ToolBoxQStyleOptionToolBox
    QStyleOption::SO_ToolButtonQStyleOptionToolButton
    QStyleOption::SO_ViewItemQStyleOptionViewItem (used in Interviews)
    以下值用于自定义控件:
    ConstantValueDescription
    QStyleOption::SO_CustomBase0xf00为自定义 QStyleOptions 保留,所有自定义控件值必须高于此值
    QStyleOption::SO_ComplexCustomBase0xf000000为自定义 QStyleOptions 保留;所有自定义复杂控件值必须高于此值
    枚举 QStyleOption:: StyleOptionType

    此枚举用于保存有关样式选项类型的信息,并为每个QStyleOption子类定义。

    ConstantValueDescription
    QStyleOption::TypeSO_DefaultSO_Default 提供的样式选项类型(此类的SO_Default)

    该类型由QStyleOption内部使用,它的子类和qstyleoption_cast () 来确定样式选项的类型。一般来说,除非您想创建自己的QStyleOption子类和自己的样式,否则您无需担心这一点。

    成员方法
    void QStyleOption:: initFrom (const QWidget * widget )

    根据指定的小部件初始化state、direction、rect、palette、fontMetrics和styleObject成员变量。
    这是一个便利功能;成员变量也可以手动初始化。
    另见QWidget::layoutDirection ()、QWidget::rect ()、QWidget::palette () 和QWidget::fontMetrics ()。

    成员变量文档
    Qt::LayoutDirection QStyleOption::direction

    此变量保存在控件中绘制文本时应使用的文本布局方向
    默认情况下,布局方向是Qt::LeftToRight。
    另请参见initFrom ()。

    QFontMetrics QStyleOption:: fontMetrics

    此变量保存在控件中绘制文本时应使用的字体规格
    默认情况下,使用应用程序的默认字体。
    另请参见initFrom ()。

    QPalette QStyleOption::palette

    此变量保存绘制控件时应使用的调色板
    默认情况下,使用应用程序的默认调色板。
    另请参见initFrom ()。

    QRect QStyleOption::rect

    该变量保存应该用于各种计算和绘画的区域
    对于不同类型的元素,这可能具有不同的含义。例如,对于QStyle::CE_PushButton元素,它将是整个按钮的矩形,而对于QStyle::CE_PushButtonLabel元素,它将只是按钮标签的区域。
    默认值为空矩形,即宽度和高度都设置为 0 的矩形。
    另请参见initFrom ()。

    QStyle::State QStyleOption::state

    此变量保存绘制控件时使用的样式标志
    默认值为QStyle::State_None。
    另请参见initFrom ()、QStyle::drawPrimitive ()、QStyle::drawControl ()、QStyle::drawComplexControl () 和QStyle::State。

    QObject *QStyleOption:: styleObject

    此变量保存正在设置样式的对象
    内置样式支持以下类型:QWidget、QGraphicsObject和QQuickItem。
    另请参见initFrom ()。

    int QStyleOption::type

    此变量保存样式选项的选项类型
    默认值为SO_Default。
    另请参阅OptionType。

    int QStyleOption::version

    此变量保存样式选项的版本
    子类可以使用此值来实现扩展而不会破坏兼容性。如果使用qstyleoption_cast () 函数,一般不需要勾选。
    默认值为 1。

    示例:

    出于性能原因,成员函数很少,并且对成员变量的访问是直接的(即,使用.or->运算符)。这种低层次的感觉使结构易于使用,并强调这些只是样式函数使用的参数。

    QStyle函数的调用者通常在堆栈上创建 QStyleOption 对象。这与 Qt 对QString、QPalette和QColor等类型的隐式共享的广泛使用相结合,确保不会发生不必要的内存分配。
    以下代码片段显示了如何使用特定的 QStyleOption 子类来绘制按钮:

    void MyPushButton::paintEvent(QPaintEvent *)
    {
        QStyleOptionButton option;
        option.initFrom(this);
        option.state = isDown() ? QStyle::State_Sunken : QStyle::State_Raised;
        if (isDefault())
            option.features |= QStyleOptionButton::DefaultButton;
        option.text = text();
        option.icon = icon();
    
        QPainter painter(this);
        style()->drawControl(QStyle::CE_PushButton, &option, &painter, this);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    QStyleOption官方文档

  • 相关阅读:
    【云原生】设备入云之FlexManager主流控制器读写
    SpringBoot主启动类使用@ComponentScans、@ComponentScan扫描组件类,注意避坑
    18张图,直观理解神经网络、流形和拓扑
    离线配置ohmyzsh nvim tldr conda ssh nvm
    【ACWing】3429. 全排列
    jmeter跨平台运行csv等文件
    跟艾文学编程《Python基础》(6)numpy数值计算
    9.1充血模型和贫血模型
    【Java万花筒】跨越云平台的无服务器开发:使用Java构建弹性、高效的应用
    前后缀分解
  • 原文地址:https://blog.csdn.net/xiaobai_cpp/article/details/126686667