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及其子类的更多相关文章

  1. Qt之模型/视图(自定义按钮)(使用QStyleOption的子类进行drawControl,和我用的方法完全不一样)

    http://blog.csdn.net/liang19890820/article/details/50974059

  2. QT界面 理解QStyle和QStyleOption以及QStyleFactory

    QStyleOption类和QStyle类简介 QStyleOption类存储QStyle函数使用的参数.QStyleOption及其子类包含了QStyle函数绘制图形元素所需的所有信息. 由于性能原 ...

  3. 每日一笔记之2:QT之坐标系统:

    以前一直多单片机开发,也没怎么使用过大的显示器,第一次学习,备忘: QT画图系统. 绘图,通过QPainter类实现. Qt的绘图系统对底层函数进行了良好的封装,使得在屏幕和设备的绘图功能可能使用相同 ...

  4. Qt之自定义插件(for Qt Designer)

    之前Blog里面有关于QWT的编译.配置.使用的文章,分别是在VS与Creator下进行的. QWT编译.配置.使用(VS2010 + Qt5.1.0). QWT编译.配置.使用(Qt Creator ...

  5. Qt经典—线程、事件与Qobject(耳目一新)

    介绍 You’re doing it wrong. — Bradley T. Hughes 线程是qt channel里最流行的讨论话题之一.许多人加入了讨论并询问如何解决他们在运行跨线程编程时所遇到 ...

  6. Qt经典—线程、事件与Qobject

    介绍 You’re doing it wrong. — Bradley T. Hughes 线程是qt channel里最流行的讨论话题之一.许多人加入了讨论并询问如何解决他们在运行跨线程编程时所遇到 ...

  7. 【Qt开发】事件循环与线程 一

    事件循环与线程 一 初次读到这篇文章,译者感觉如沐春风,深刻体会到原文作者是花了很大功夫来写这篇文章的,文章深入浅出,相信仔细读完原文或下面译文的读者一定会有收获. 由于原文很长,原文作者的行文思路是 ...

  8. QCanvasItem介绍-QT3

    QCanvasItem类提供一个在QCanvas上的抽象图形对象. 各种QCanvasItem子类提供立即可用的行为.这个类是一个纯粹的抽象超类,它提供了在所有具体的canvas项目类中共享的行为.Q ...

  9. C++ GUI Qt4编程-创建自定义窗口部件

    C++ GUI Qt4编程-创建自定义窗口部件   Qtqt4 通过Qt窗口部件进行子类化或者直接对QWidget进行子类化,就可以创建自定义窗口部件,下面示范两种方式,并且也会说明如何把自定义窗口部 ...

  10. C++ GUI Qt4学习笔记05

    C++ GUI Qt4学习笔记05   qtc++正则表达式 QIntValidator           --  只让用户输入整数 QDoubleValidator     --  只让用户输入浮 ...

随机推荐

  1. Redis的设计与实现(1)-SDS简单动态字符串

    现在在高铁上, 赶着春节回家过年, 无座站票, 电脑只能放行李架上, 面对着行李架撸键盘--看过<Redis的设计与实现>这本书, 突然想起, 便整理下SDS的内容, 相对后面的章节, 算 ...

  2. 自学前端-HTML5+CSS-综合案例一-热词

    综合案例一-热词 目录 综合案例一-热词 1.设计需求 2.设计所需标签和CSS样式 3.设计具体步骤 4.遇到的问题 设计图如下 1.设计需求 ①需要鼠标放上去有显示透明 ②需要点击后跳转到相应页面 ...

  3. struct 结构体分析

    struct分析 1.无成员的空结构体size为 1byte 2.通过/zp可以调整对齐值,默认是8字节 //设编译对齐设定值为Zp //设成员变量的类型为 member type //设成员变量在结 ...

  4. (五) MdbCluster分布式内存数据库——数据迁移架构及节点扩缩容状态图

    (五) MdbCluster分布式内存数据库--数据迁移架构及节点扩缩容状态图 上一篇:(四) MdbCluster分布式内存数据库--业务消息处理 本节主要讨论在系统扩容期间的数据迁移架构及节点的状 ...

  5. 三个编程思想:面向对象编程、面向接口编程、面向过程编程【概念解析系列_1】【C# 基础】

    〇.前言 对于 .Net 中的编程思想还是十分重要的,也是编码出高效的程序的基础! 在使用之前了解其本质,那么用起来就游刃有余.下面来简单对比下三个编程思想,看下它们都是什么,它们之间又有什么关系. ...

  6. 青少年CTF平台-Web-Flag在哪里

    平台名称:青少年CTF训练平台 题目名称:Flag在哪里? 解题过程: 启动环境,需要等待大概20秒左右的时间. 访问,页面显示Flag反正不在这. 右键网页,发现无法使用右键. 那么我们直接F12 ...

  7. Mysql高级7-存储过程

    一.介绍 存储过程是事先经过编译并存储在数据库中的一段sql语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的.存储过程思 ...

  8. 继copilot之后,又一款免费帮你写代码的插件

    写在前面 在之前的文章中推荐过一款你写注释,它就能帮你写代码的插件copilot copilot写代码的能力没得说,但是呢copilot试用没几天之后就收费了 传送门:你写注释她帮你写代码 按理说这么 ...

  9. Flutter系列文章-Flutter 插件开发

    在本篇文章中,我们将学习如何开发 Flutter 插件,实现 Flutter 与原生平台的交互.我们将详细介绍插件的开发过程,包括如何创建插件项目.实现方法通信.处理异步任务等.最后,我们还将演示如何 ...

  10. 【日常踩坑】修复 chrome 打不开微信或者部分第三方应用内链接

    目录 默认浏览器为 chrome 时,打不开微信或者部分第三方应用内链接(或者没有反应) 修复问题:卸载 KGChromePlugin 参考资料 默认浏览器为 chrome 时,打不开微信或者部分第三 ...