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);
};
派生类

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

枚举 QStyleOption:: OptionType

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

Constant Value Description
QStyleOption::SO_Button QStyleOptionButton
QStyleOption::SO_ComboBox QStyleOptionComboBox
QStyleOption::SO_Complex QStyleOptionComplex
QStyleOption::SO_Default QStyleOption
QStyleOption::SO_DockWidget QStyleOptionDockWidget
QStyleOption::SO_FocusRect QStyleOptionFocusRect
QStyleOption::SO_GraphicsItem QStyleOptionGraphicsItem
QStyleOption::SO_GroupBox QStyleOptionGroupBox
QStyleOption::SO_Header QStyleOptionHeader
QStyleOption::SO_MenuItem QStyleOptionMenuItem
QStyleOption::SO_ProgressBar QStyleOptionProgressBar
QStyleOption::SO_RubberBand QStyleOptionRubberBand
QStyleOption::SO_SizeGrip QStyleOptionSizeGrip
QStyleOption::SO_Slider QStyleOptionSlider
QStyleOption::SO_SpinBox QStyleOptionSpinBox
QStyleOption::SO_Tab QStyleOptionTab
QStyleOption::SO_TabBarBase QStyleOptionTabBarBase
QStyleOption::SO_TabWidgetFrame QStyleOptionTabWidgetFrame
QStyleOption::SO_TitleBar QStyleOptionTitleBar
QStyleOption::SO_ToolBar QStyleOptionToolBar
QStyleOption::SO_ToolBox QStyleOptionToolBox
QStyleOption::SO_ToolButton QStyleOptionToolButton
QStyleOption::SO_ViewItem QStyleOptionViewItem (used in Interviews)
以下值用于自定义控件:
Constant Value Description
QStyleOption::SO_CustomBase 0xf00 为自定义 QStyleOptions 保留,所有自定义控件值必须高于此值
QStyleOption::SO_ComplexCustomBase 0xf000000 为自定义 QStyleOptions 保留;所有自定义复杂控件值必须高于此值
枚举 QStyleOption:: StyleOptionType

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

Constant Value Description
QStyleOption::Type SO_Default SO_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);
}

QStyleOption官方文档

QStyleOption类型相关推荐

  1. QStyle类用法总结(二)

    1.前言 为了更容易搞懂Qt自定义风格绘制,在平时开发中,实现定制自己风格的UI,本人推出有关QStyle自定义风格系列文章.文章链接如下: <QStyle类用法总结(一)>.对Qt自定义 ...

  2. 《疯狂Java讲义》(第5版) 作者李刚(待重新排版)

    第1章 Java语言概述与开发环境 1.1 Java语言的发展简史 JDK1.0 : Sun在1996年年初发布了JDK 1.0,该版本包括两部分:运行环境(即JRE)和开发环境(即JDK).运行环境 ...

  3. QT的QStyleOption类的使用

    详细说明 QStyleOption类存储QStyle函数使用的参数. QStyleOption及其子类包含QStyle函数绘制图形元素所需的所有信息. 出于性能原因,成员函数很少,并且可以直接访问成员 ...

  4. Oracle根据日期区间查询Date类型的数据

    在Oracle数据库中,根据日期区间查询Date类型的数据 select proposalno,policyno,enddate from 表名 where 时间字段 between to_date( ...

  5. Oracle type (自定义类型的使用)

    oracle - type type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要 ...

  6. c语言long int表示范围_C语言编程第9讲——这些C语言整数类型的知识点你掌握了吗...

    1.char其实是一种整数类型 在C语言中,字符使用整数来表示. 例如下面的代码: #include int main(){ char letter = '2'; printf("Lette ...

  7. Redis 笔记(07)— sorted set 类型(添加、删除有序集合元素、获取分数范围内成员、按score排序、返回集合元素个数)

    zset 可能是 Redis 提供的最为特色的数据结构,一方面它是一个 set,保证了内部 value 的唯一性,另一方面它可以给每个 value 赋予一个 score,代表这个 value 的排序权 ...

  8. 非本地类型不能定义方法 cannot define new methods on non-local type time.Duration

    能够随意地为各种类型起名字,是否意味着可以在自己包里为这些类型任意添加方法 ? 参见下面的代码演示 : package mainimport "time"type MyDurati ...

  9. Go 知识点(13) — 如何判断变量类型

    在 Go 语言中可以使用类型断言来判断变量的类型,类型断言的使用有两种方式: 返回两个值,分别是断言为设置类型后的值和断言成功的标志符: 返回一个值,表示断言为设置类型的值: 1. 返回单个值的使用 ...

  10. Go 知识点(05)— 类型别名与类型定义

    1. 类型别名 类型别名需要在别名和原类型之间加上赋值符号 = ,使用类型别名定义的类型与原类型等价,Go 语言内建的基本类型中就存在两个别名类型. byte 是 uint8 的别名类型: rune ...

最新文章

  1. linux sed 批量替换多个文件中的字符串
  2. easyexcel工具类_阿里巴巴程序员常用的 15 款开发者工具
  3. python 绘制折线图-怎样用python绘制折线图
  4. swift - if let Optional 语法
  5. Java Web应用的代码分层最佳实践
  6. Java World中的GraphQL简介
  7. 《02》let 和 const 命令
  8. 百度安全DDoS攻击年度报告出炉 企业防护有新招!
  9. 树形$dp$学习笔记
  10. Ubuntu16.04安装Shark-3.0.0
  11. 大量用户升级iPhone3.0系统导致苹果服务器故障
  12. 【数据结构笔记】Leetcode买卖股票的最佳时机 系列总结
  13. linux pe系统下载,WINPE LINUX DOS 完美者U盘维护系统V8.1 正式版
  14. 嵌入式单片机高级篇(一)Stm32F103电容触摸按键
  15. 《华为研发》阅读 - 15 (分解“满汉全席”,“先谋而后动”)
  16. 图像处理---LoMo
  17. tensorflow聊天机器人python实现_用 TensorFlow 做个聊天机器人
  18. 交换二叉树的左右子树——非递归方式
  19. 当Androidstudio添加权限后仍然报错java.lang.SecurityException: Permission Denial
  20. Jetson NX Ubuntu 18.04下谷歌输入法候选框不显示解决办法

热门文章

  1. 初创企业及中小型企业财务特点以及建议
  2. 微博宕机复盘:什么样的技术架构,可支持80个明星并发出轨?
  3. 计算机网络学习笔记3-ARP+广播风暴
  4. 抑制广播风暴 各种发包
  5. java类的构造方法编程训练—买可乐
  6. loadrunner icrosoft Visual c++2005 sp1 提示命令行选项语法错误,键入“命令/?”
  7. 你是编程高手还是IT民工
  8. 应用案例 | 2011款保时捷卡宴3.0T车发动机怠速间歇性抖动故障诊断
  9. php版本微信公众号开发
  10. 杭州异地身份证办理条件以及材料