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. 基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发2-功能开发

    基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发2-功能开发 项目简介:目标是开发一个跨平台的AI聊天和其他功能的客户端平台.目的来学习和了解Avalonia.将这个项目部署 ...

  2. .NET for Apache Spark 调试

    .NET for Apache Spark 调试 官方文档:在 Windows 上部署 .NET for Apache Spark 应用程序 | Microsoft Learn 打开"新命令 ...

  3. 信奥赛题1001:Hello,World!

    这个题实在是太简单的了,无法比喻,直接付代码! //c++ #include<bits/stdc++.h> using namespace std; int main() { cout&l ...

  4. 论文解读(BERT-DAAT)《Adversarial and Domain-Aware BERT for Cross-Domain Sentiment Analysis》

    论文信息 论文标题:Adversarial and Domain-Aware BERT for Cross-Domain Sentiment Analysis论文作者:论文来源:2020 ACL论文地 ...

  5. Pycharm:显示每一行代码的修改记录

    解决方案 安装插件GitToolBox

  6. 给你推荐一款快速通过 typescript 生成 jsonschema 的包处理器

    theme: github fast-typescript-to-jsonschema Typescript 生成 jsonschema 数据插件 性能 案例 interface AAA { a: n ...

  7. 一条命令突破Windows限制,暂定更新时间至3000天

    在系统界面上最长也就只能延期 35 天,而且 35 天以后一定要更新了才能继续暂停.不过,我找到了一段能延长暂停时间的代码 reg add "HKEY_LOCAL_MACHINE\SOFTW ...

  8. 【Leaflet入门篇】 Leaflet快速入门

    0 前言 Leaflet 是一个开源并且对移动端友好的交互式地图 JavaScript 库. 它大小仅仅只有 42 KB of JS, 并且拥有绝大部分开发者所需要的所有地图特性 .Leaflet 简 ...

  9. JDK 17 营销初体验 —— 亚毫秒停顿 ZGC 落地实践

    前言 自 2014 年发布以来, JDK 8 一直都是相当热门的 JDK 版本.其原因就是对底层数据结构.JVM 性能以及开发体验做了重大升级,得到了开发人员的认可.但距离 JDK 8 发布已经过去了 ...

  10. 对JavaScript中与字符串相关的方法总结

    JavaScript中的字符串是由16位码元code unit组成.通常来说,一个字符=16位码元,该类字符也叫做单码元字符.还有一种字符组成策略是代理对,它由两对16位码元组成,即一个字符对应两个1 ...