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);
};
派生类
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类型相关推荐
- QStyle类用法总结(二)
1.前言 为了更容易搞懂Qt自定义风格绘制,在平时开发中,实现定制自己风格的UI,本人推出有关QStyle自定义风格系列文章.文章链接如下: <QStyle类用法总结(一)>.对Qt自定义 ...
- 《疯狂Java讲义》(第5版) 作者李刚(待重新排版)
第1章 Java语言概述与开发环境 1.1 Java语言的发展简史 JDK1.0 : Sun在1996年年初发布了JDK 1.0,该版本包括两部分:运行环境(即JRE)和开发环境(即JDK).运行环境 ...
- QT的QStyleOption类的使用
详细说明 QStyleOption类存储QStyle函数使用的参数. QStyleOption及其子类包含QStyle函数绘制图形元素所需的所有信息. 出于性能原因,成员函数很少,并且可以直接访问成员 ...
- Oracle根据日期区间查询Date类型的数据
在Oracle数据库中,根据日期区间查询Date类型的数据 select proposalno,policyno,enddate from 表名 where 时间字段 between to_date( ...
- Oracle type (自定义类型的使用)
oracle - type type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要 ...
- c语言long int表示范围_C语言编程第9讲——这些C语言整数类型的知识点你掌握了吗...
1.char其实是一种整数类型 在C语言中,字符使用整数来表示. 例如下面的代码: #include int main(){ char letter = '2'; printf("Lette ...
- Redis 笔记(07)— sorted set 类型(添加、删除有序集合元素、获取分数范围内成员、按score排序、返回集合元素个数)
zset 可能是 Redis 提供的最为特色的数据结构,一方面它是一个 set,保证了内部 value 的唯一性,另一方面它可以给每个 value 赋予一个 score,代表这个 value 的排序权 ...
- 非本地类型不能定义方法 cannot define new methods on non-local type time.Duration
能够随意地为各种类型起名字,是否意味着可以在自己包里为这些类型任意添加方法 ? 参见下面的代码演示 : package mainimport "time"type MyDurati ...
- Go 知识点(13) — 如何判断变量类型
在 Go 语言中可以使用类型断言来判断变量的类型,类型断言的使用有两种方式: 返回两个值,分别是断言为设置类型后的值和断言成功的标志符: 返回一个值,表示断言为设置类型的值: 1. 返回单个值的使用 ...
- Go 知识点(05)— 类型别名与类型定义
1. 类型别名 类型别名需要在别名和原类型之间加上赋值符号 = ,使用类型别名定义的类型与原类型等价,Go 语言内建的基本类型中就存在两个别名类型. byte 是 uint8 的别名类型: rune ...
最新文章
- linux sed 批量替换多个文件中的字符串
- easyexcel工具类_阿里巴巴程序员常用的 15 款开发者工具
- python 绘制折线图-怎样用python绘制折线图
- swift - if let Optional 语法
- Java Web应用的代码分层最佳实践
- Java World中的GraphQL简介
- 《02》let 和 const 命令
- 百度安全DDoS攻击年度报告出炉 企业防护有新招!
- 树形$dp$学习笔记
- Ubuntu16.04安装Shark-3.0.0
- 大量用户升级iPhone3.0系统导致苹果服务器故障
- 【数据结构笔记】Leetcode买卖股票的最佳时机 系列总结
- linux pe系统下载,WINPE LINUX DOS 完美者U盘维护系统V8.1 正式版
- 嵌入式单片机高级篇(一)Stm32F103电容触摸按键
- 《华为研发》阅读 - 15 (分解“满汉全席”,“先谋而后动”)
- 图像处理---LoMo
- tensorflow聊天机器人python实现_用 TensorFlow 做个聊天机器人
- 交换二叉树的左右子树——非递归方式
- 当Androidstudio添加权限后仍然报错java.lang.SecurityException: Permission Denial
- Jetson NX Ubuntu 18.04下谷歌输入法候选框不显示解决办法