QT(9)-QStyleOption及其子类
1 QStyleOption
QStyleOption及其子类包含QStyle函数绘制图形元素所需的所有信息。
出于性能考虑,成员函数很少,对成员变量的访问是直接的(即使用。或者->运算符)。这种低级的感觉使结构易于使用,并强调它们只是样式函数使用的参数。
QStyle函数的调用者通常在堆栈上创建QStyleOption对象。这与Qt对QString、QPalette和QColor等类型的隐式共享的广泛使用相结合,确保了没有不必要的内存分配。
1.1 函数
1.1.1 initFrom
void QStyleOption::initFrom(const QWidget *widget)
"initFrom"是QStyleOption类中的一个成员函数,用于从给定的QWidget对象初始化QStyleOption对象的成员变量。它可以使开发人员在没有手动初始化QStyleOption对象的成员变量的情况下从QWidget对象获取样式信息。通过这种方式,开发人员可以快速和简便地对QWidget对象进行样式定制,而无需手动设置每个成员变量的值。
1.2 成员变量
1.2.1 Qt::LayoutDirection direction
"direction"是QStyleOption类中的一个成员变量,用于存储布局方向信息。它是Qt命名空间中的Qt::LayoutDirection枚举类型,表示用户界面中的文本和其他元素的布局方向。Qt::LayoutDirection枚举类型有两个值:Qt::LeftToRight和Qt::RightToLeft,分别表示从左到右和从右到左的布局方向。使用方向变量,开发人员可以轻松地定制项目的布局方向,以适应不同语言和区域的用户需求。
1.2.2 QFontMetrics fontMetrics
"fontMetrics"是QStyleOption类中的一个成员变量,用于存储字体度量信息。它是QFontMetrics类的实例,提供了有关字体的详细信息,例如字体大小、行间距、字符宽度等。通过使用字体度量信息,开发人员可以根据当前字体的属性计算出文本的大小和布局,并在必要时对其进行调整以适应用户界面的布局要求。
1.2.3 QPalette palette
"palette"是QStyleOption类中的一个成员变量,用于存储调色板信息。它是QPalette类的实例,存储了关于绘图项目的颜色信息,例如前景色、背景色、边框颜色等。通过使用调色板信息,开发人员可以控制绘图项目的外观和颜色,以符合用户的需求和喜好。
1.2.4 QRect rect
"rect"是QStyleOption类中的一个成员变量,用于存储矩形信息。它是QRect类的实例,表示一个矩形区域,存储了该矩形的位置和大小信息。通过使用矩形信息,开发人员可以控制绘图项目的大小和位置,以适应用户界面的布局要求。
1.2.5 QStyle::State state
"state"是QStyleOption类中的一个成员变量,用于存储状态信息。它是Qt命名空间中的QStyle::State枚举类型,表示绘图项目的当前状态。QStyle::State枚举类型包含了许多常用的状态标志,例如是否处于活动状态、是否选中、是否有边框等。通过使用状态信息,开发人员可以根据绘图项目的当前状态调整其外观,以提供用户更好的体验。
1.2.6 QObject * styleObject
"styleObject"是QStyleOption类中的一个成员变量,用于存储指向Qt样式对象的指针。它是QObject类的指针,指向Qt样式对象,该对象实现了Qt的样式系统。通过使用样式对象,开发人员可以在不修改代码的情况下改变整个应用程序的外观,提供更好的用户体验。
1.2.7 int type
"type"是一个整数类型,用于指示QStyleOption的类型。它是一个枚举类型,用于区分不同类型的QStyleOption对象。
1.2.8 int version
"version"是一个整数类型,用于表示QStyleOption的版本。这是一个可选功能,可以用于在以后的版本中添加新功能,而不会影响现有代码的工作方式。如果要使用这个特性,开发人员必须确保在QStyleOption的每个版本中更新版本号。
2 QStyleOptionViewItem
QBrush backgroundBrush
视图项的背景笔刷。
Qt::CheckState checkState
视图项的复选框状态。
Qt::Alignment decorationAlignment
视图项内装饰图像的对齐方式。
QStyleOptionViewItem::Position decorationPosition
装饰图像的位置。
QSize decorationSize
装饰图像的大小。
Qt::Alignment displayAlignment
视图项内文本的对齐方式。
QStyleOptionViewItem::ViewItemFeatures features
视图项的特性。
QFont font
视图项内的字体
QIcon icon
视图项内的图标。
QModelIndex index
视图项的模型索引
bool showDecorationSelected
表示视图项是否显示装饰图像。如果该变量为true,则表示视图项选择了装饰图像,并且应显示该装饰图像。否则,装饰图像不应显示。
QString text
视图项内的文本。
QT(9)-QStyleOption及其子类的更多相关文章
- Qt之模型/视图(自定义按钮)(使用QStyleOption的子类进行drawControl,和我用的方法完全不一样)
http://blog.csdn.net/liang19890820/article/details/50974059
- QT界面 理解QStyle和QStyleOption以及QStyleFactory
QStyleOption类和QStyle类简介 QStyleOption类存储QStyle函数使用的参数.QStyleOption及其子类包含了QStyle函数绘制图形元素所需的所有信息. 由于性能原 ...
- 每日一笔记之2:QT之坐标系统:
以前一直多单片机开发,也没怎么使用过大的显示器,第一次学习,备忘: QT画图系统. 绘图,通过QPainter类实现. Qt的绘图系统对底层函数进行了良好的封装,使得在屏幕和设备的绘图功能可能使用相同 ...
- Qt之自定义插件(for Qt Designer)
之前Blog里面有关于QWT的编译.配置.使用的文章,分别是在VS与Creator下进行的. QWT编译.配置.使用(VS2010 + Qt5.1.0). QWT编译.配置.使用(Qt Creator ...
- Qt经典—线程、事件与Qobject(耳目一新)
介绍 You’re doing it wrong. — Bradley T. Hughes 线程是qt channel里最流行的讨论话题之一.许多人加入了讨论并询问如何解决他们在运行跨线程编程时所遇到 ...
- Qt经典—线程、事件与Qobject
介绍 You’re doing it wrong. — Bradley T. Hughes 线程是qt channel里最流行的讨论话题之一.许多人加入了讨论并询问如何解决他们在运行跨线程编程时所遇到 ...
- 【Qt开发】事件循环与线程 一
事件循环与线程 一 初次读到这篇文章,译者感觉如沐春风,深刻体会到原文作者是花了很大功夫来写这篇文章的,文章深入浅出,相信仔细读完原文或下面译文的读者一定会有收获. 由于原文很长,原文作者的行文思路是 ...
- QCanvasItem介绍-QT3
QCanvasItem类提供一个在QCanvas上的抽象图形对象. 各种QCanvasItem子类提供立即可用的行为.这个类是一个纯粹的抽象超类,它提供了在所有具体的canvas项目类中共享的行为.Q ...
- C++ GUI Qt4编程-创建自定义窗口部件
C++ GUI Qt4编程-创建自定义窗口部件 Qtqt4 通过Qt窗口部件进行子类化或者直接对QWidget进行子类化,就可以创建自定义窗口部件,下面示范两种方式,并且也会说明如何把自定义窗口部 ...
- C++ GUI Qt4学习笔记05
C++ GUI Qt4学习笔记05 qtc++正则表达式 QIntValidator -- 只让用户输入整数 QDoubleValidator -- 只让用户输入浮 ...
随机推荐
- maven项目创建后添加resources等文件夹
maven项目初始化只生成src/main/resources目录,但是这个不够用,我们得创建 src/main/java目录 src/test/java目录 src/test/resources目录 ...
- 现代C++(Modern C++)基本用法实践:四、模板
概述 C++的模板是泛型编程思想的一种实现.C++是强类型语言,处处强调类型.同样的加法运算,int和float的加法运算需定义两个函数(重载),而使用模板则可以只用一个函数(见下面示例). 这类似我 ...
- 【技术积累】Vue中的核心概念【四】
Vue的生命周期 Vue中的生命周期是指组件从创建到销毁的整个过程中,会触发一系列的钩子函数 Vue2中的生命周期 Vue2中的生命周期钩子函数是在组件的不同阶段执行的特定函数.这些钩子函数允许开发者 ...
- 2021-11-17 WPF初识
StackPanel容器:默认竖直排列,Orientation="Horizontal"横向排列,超过就不会显示 wrapPanel:超过会自动换行 设置样式: <Windo ...
- 体验IntelliJ IDEA的远程开发(Remote Development)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 IDEA的远程开发功能,可以将本地的编译.构 ...
- [POI2007]GRZ-Ridges and Valleys 题解
(2022-12-28 ) AcWing 1106 洛谷 P3456 题目大意 找出一个图中所有大于(或小于)周围相邻的非连通块点的所有连通块个数. 就是说,对于一个连通块: 如果它周围的点都低于它, ...
- [selenium]取值元素文本属性样式
前言 版本: python:3.9 selenium:4.1.5 获取元素文本 text = driver.find_element(by=By.XPATH, value=""). ...
- Kioptrix Level 1
Kioptrix这个系列靶机默认是桥接模式,如果我们kali使用NAT是扫描不到靶机的,通过VM的靶机网络设置也不能更改成功. 解决方式:每次下载好靶机先不导入VM,如果已经导入,需要"移除 ...
- 《SQL与数据库基础》08. 多表查询
目录 多表查询 多表关系 一对多 多对多 一对一 多表查询概述 分类 内连接 外连接 自连接 联合查询 子查询 分类 标量子查询 列子查询 行子查询 表子查询 案例 本文以 MySQL 为例 多表查询 ...
- 云原生 | 企业内使用 CoreDNS 构建高性能、插件化的DNS服务器
[点击 关注「 全栈工程师修炼指南」公众号 ] 设为「️ 星标」带你从基础入门 到 全栈实践 再到 放弃学习! 涉及 网络安全运维.应用开发.物联网IOT.学习路径 .个人感悟 等知识分享. 希望各位 ...