码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C++界面开发框架Qt入门指南 - Qt Widget样式感知小部件(五)


    样式(继承QStyle的类)代表小部件绘制并封装 GUI 的外观。 QStyle 类是一个抽象基类,它封装了 GUI 的外观。 Qt 的内置小部件使用它来执行几乎所有的绘图,确保它们看起来与等效的原生小部件完全一样。

    Qt带有一系列内置样式,某些样式仅在特定平台上可用。自定义样式可作为插件使用,或者通过使用 QStyleFactory::create()创建特定样式类的实例并使用QApplication::setStyle()设置它。

    Qt技术交流群:166830288      欢迎一起进群讨论

    点击获取Qt组件下载

    QStyle 函数

    QStyle类定义了三个用于绘制图元、控件和复杂元素的函数: drawPrimitive(), drawControl()和drawComplexControl(),这些函数采用以下参数:

    • 要绘制的元素的枚举值。
    • 一个QStyleOption ,其中包含绘制元素所需的信息。
    • 用于绘制元素的QPainter。
    • 指向QWidget的指针,通常是绘制元素的小部件。

    并非所有小部件都向自己发送指针,如果发送给函数的样式选项不包含您需要的信息,应该检查小部件实现来查看是否发送指向自身的指针。

    QStyle 类还提供了绘制元素时使用的辅助函数。drawItemText()函数在指定的矩形内绘制文本,将QPalette作为参数;drawItemPixmap()函数有助于在指定的边界矩形内对齐像素图。

    其他 QStyle 函数对绘图的函数进行各种计算,如果小部件自己绘制多个样式元素,它们也使用这些函数来计算大小提示和边界矩形。 与绘制元素的函数一样,辅助函数通常采用相同的参数。

    • subElementRect()  函数采用SubElement枚举值并计算子元素的边界矩形,样式使用这个函数来知道在哪里绘制元素的不同部分。 这主要是为了重用; 如果创建新样式,则可以使用与超类相同的子元素位置。
    • subControlRect()函数用于计算复杂控件中子控件的边界矩形。 实现新样式时,您重新实现 subControlRect() 并计算与超类不同的矩形。
    • pixelMetric() 函数返回一个像素度量,它是以屏幕像素为单位给出的与样式相关的大小,它采用 PixelMetric 枚举的值并返回正确的测量值。请注意,像素度量不一定必须是静态测量,但可以使用例如样式选项进行计算。
    • hitTestComplexControl() 函数返回鼠标指针在复杂控件上的子控件。 通常,这只是简单地使用subControlRect()来获取子控件的边界矩形,然后查看哪个矩形包含光标的位置。

    QStyle 也有函数polish() 和unpolish(),所有小部件在显示之前被发送到 Polish() 函数,在它们被隐藏时被发送到 unpolish()。您可以使用这些函数来设置小部件的属性或执行您的样式所需的其他工作,例如,如果您需要知道鼠标何时悬停在小部件上,则需要设置WA_Hover 小部件属性,State_MouseOver 状态标志将在小部件的样式选项中设置。

    QStyle 有一些静态辅助函数,可以完成一些常见和困难的任务。 他们可以根据滑块的值计算滑块句柄的位置,并在考虑反向布局的情况下变换矩形并绘制文本。

    重新实现 QStyle 虚函数的常用方法是对不同于超类的元素进行处理; 对于所有其他元素,您可以简单地使用超类实现。

    Qt组件推荐

    • QtitanRibbon - Ribbon UI组件:是一款遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,QtitanRibbon致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
    • QtitanChart - Qt类图表组件:是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。
    • QtitanDataGrid - Qt网格组件:提供了一套完整的标准 QTableView 函数和传统组件无法实现的独特功能。使您能够将不同来源的各类数据加载到一个快速、灵活且功能强大的可编辑网格中,支持排序、分组、报告、创建带状列、拖放按钮和许多其他方便的功能。
    • QtitanNavigation:QtitanNavigationDesignUI 组件是一组 GUI 控件,它实现了菜单、导航框、命令栏等导航界面,并让您以更少的滚动和点击次数有效地查看所有实体(工作区、网格或其他项目)。
    • QtitanDocking:允许您像 Visual Studio 一样为您的伟大应用程序配备可停靠面板和可停靠工具栏。黑色、白色、蓝色调色板完全支持 Visual Studio 2019 主题!
  • 相关阅读:
    洛谷刷题C语言:PASCAL、Array、铝锤制作、Kaučuk、NASLJEDSTVO
    行车记录仪检测不到内存卡的原因
    终于有多位大神联手把计算机基础知识与操作系统讲清楚了
    Blazor/Hybird 触屏下单程序调优笔记
    投影仪怎么安装小容量软件?5款小体积应用下载搞定内存不足
    《DevOps围炉夜话》- Pilot - CNCF开源DevOps项目DevStream简介 - feat. PMC成员胡涛
    《凤凰架构》读书笔记 —— 本地事务如何实现原子性和持久性?
    【RocketMQ中生产者生产消息的高可用机制、消费者消费消息的高可用机制、消息的重试机制、死信队列于死信消息】
    从校园到职场,如果是你会和我一样吗?
    [github配置] 远程访问仓库以及问题解决
  • 原文地址:https://blog.csdn.net/AABBbaby/article/details/125496337
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号