【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.1 效果演示、技术点

news2024/11/10 10:24:12

Qt 中绘图用到的类是 QPainter,可以实现点、线、矩形、圆形、多边形、圆弧、饼图、图片等的绘制

什么时候会用到绘图?

  • 需要简单绘制时

比如,绘制温度的曲线时,如下:

image-20221204135854814

  • 自定义控件

绘图最大的一个应用场景就是自定义控件,Qt 本身提供的一些控件是有限的,并且它提供的一些控件很可能不满足我们的需要

这种情况下, 就需要自定义控件了。

如下,是自定义的一个仪表盘,接下来会详细说明其功能

image-20221204140251952


本节主要介绍本章要实现的效果

1. 基本绘图

绘图用到的类是 QPainter,本节的效果截图如下:

在这里插入图片描述

其实这里参考的是官方提供的 demo,路径为:C:\Qt\Examples\Qt-5.15.2\widgets\painting\basicdrawing

本节包含以下技术点:

1.1 绘制图形

可以绘制的图形包括:

  • 线
  • 矩形、圆角矩形
  • 椭圆、圆
  • 多边形
  • 圆弧、饼图、弦图
  • 多段线、多边形
  • 路径
  • 文本
  • 图片

1.2 画笔设置

画笔,对应 QPen 这个类,用于设置边框线的属性,包括:

  • 线宽
  • 颜色
  • 样式
  • 连接
  • 末端

1.3 画刷

画刷,对应 QBrush 类,用于设置边框内部填充的属性,包括:

  • 颜色
  • 样式

1.4 高级选项

  • 变换

  • 抗锯齿


2. 温度曲线

在项目中需要一些简单的绘制时,比如绘制温度曲线,可以直接使用 QPainter

当然了,如果需要更加复杂的曲线绘制,或柱状图等的绘制时,可以使用如下两个:

  • QChart
  • QCustomPlot

后面会出一个专题:《Qt开发专题-绘制曲线》,专门讲解这两个类的使用

本节使用 Qt 中的 QPainter,实现绘制高低温曲线,效果如下:

image-20221204143901566

本节包含以下技术点:

2.1 原生 QLabel 中绘制

  • 事件过滤器

2.2 曲线属性

  • 颜色
  • 虚线、实线

2.3 绘制文本

  • 文本颜色

3. 自定义控件

绘图最大的一个应用场景就是自定义控件,Qt 本身提供的一些控件是有限的,并且它提供的一些控件很可能不满足我们的需要

这种情况下, 就需要自定义控件了。

其实在实际项目中,会大量使用自定义控件, 这样会使界面美观的多!

下面介绍下自定义实现的一个控件 - 仪表盘

其实,大家可以在百度图库中,搜索 “仪表盘”,可以看到很多仪表盘的样式

不过这些样式,都大差不差,比如下面两个:

image-20221130112210870
在这里插入图片描述

它可以直观地显示检测目标的值,比简单地使用文本框显示,要高大上的多

如下,是我自定义实现的一个控件-仪表盘,如下:
在这里插入图片描述

其中的圆环、刻度、指针都有许多属性可以设置,以下是几种典型的外观:

在这里插入图片描述

在这里插入图片描述

image-20221204153650652

该控件包括的技术点:

3.1 创建自定义控件的类

首先,通常需要自定义一个类,继承自 QWidget

然后,在布局中拖拽一个 QWidget 控件,并做提升

3.2 圆环

  • 绘制
  • 设置宽度
  • 设置颜色
  • 设置末端样式

3.3 刻度

  • 绘制

  • 设置颜色

  • 设置刻度的位置

    圆环内侧

    圆环外侧

    圆环外侧(空隙)

3.4 指针

  • 颜色

  • 样式

    圆形

    尖形

  • 动画

3.5 基础设置

  • 范围

    设置最大值和最小值

  • 标题和单位

    标题:比如,温度、湿度、电压、电流

    单位:比如,°C%VA

  • 颜色

    用于设置标题和单位的颜色

  • 背景

    可以为整个控件添加一个背景色

  • 禁能

    设置控件不可用时,各个部分的颜色

    说明:为什么会有禁能这种状态?

    通常一个仪表盘对应一个设备,当在这个设备不在线时,就可以将控件设置为禁能,并设置各个部分的颜色为灰色

后面会出一个专题:《Qt开发专题 - 自定义控件》,这个仪表盘就是该专题的第一个控件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/64898.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三 TypeScript变量

流程控制 计算机执行程序的时候是按照从上到下从左到右逐行进行 我们常见的流程: 顺序 分支循环 分支结构 分支结构 单分支 语法结构 if(表达式){代码块}执行逻辑:当程序遇到if结构,首先判断表达式的值,如果表达式的值为真,则执行大括号里面的代码块,如果表达…

Spring - FactoryBean扩展接口

文章目录Preorg.springframework.beans.factory.FactoryBeanFactoryBean中的设计模式----工厂方法模式FactoryBean VS BeanFactory源码解析扩展示例Pre Spring Boot - 扩展接口一览 org.springframework.beans.factory.FactoryBean package org.springframework.beans.factory…

IDEA新建一个spark项目

第一步&#xff1a;新建一个maven工程 第二部&#xff1a;命名工程名 第三步&#xff1a;新建一个文件夹&#xff0c;并设置为sources root 第四步&#xff1a;pom编写 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http:/…

表格数据方法、分页方法及组件的封装和分页组件的复用

请假列表 1、数据获取与显示的通用方法封装 <template><div> <el-table:data"tableData"height"450"borderstyle"width: 100%":default-sort"{ prop: number, order: Ascending }"><!-- <el-table-column pr…

亚像素级精确度的角点

有时我们需要最大精度的角点检测。OpenCV为我们提供了函cv2.cornerSubPix()&#xff0c; 它可以提供亚像素级别的角点检测。下面是一个例子。首先我们要找到 Harris 角点&#xff0c;然后将角点的重心传给这个函数进行修正。Harris 角点用红色像素标出&#xff0c;绿色像素是修…

[附源码]计算机毕业设计社区疫情防控信息管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

jdk11新特性——新加的一些更实用的API

目录一、集合 增强1.1、List集合 of()方法1.2、Set集合 of()方法1.3、Map集合 of()方法1.4、List集合copyOf()方法1.5、of()和copyOf()方法创建集合的注意事项二、Stream 增强2.1、Stream 新增of()方法2.2、Stream 新增ofNullable()方法2.3、Stream 新增takeWhile() 和 dropWhi…

[附源码]Python计算机毕业设计Django网文论坛管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

torchnet简介

前言 最近项目开发过程中遇到了torchnet.metertorchnet.metertorchnet.meter来记录模型信息&#xff0c;搜了好多篇博客&#xff0c;都潦草草没有一点干货。于是参考了官方文档以及参考代码&#xff0c;根据自己的理解&#xff0c;在此做了一个其的使用教程&#xff1a; torc…

flink1.13.2 Streaming File Sink产生大量orc小文件的问题解决方案

Orc小文件合并问题 Orc小文件合并问题 现象:hdfs中出现大量ORC小文件 1.1. 已经映射为hive表ORC小文件合并 1.1.1. 非分区表 alter table 表名 concatenate; 示例: alter table ods_lxy_demo concatenate; 注意:可多次重复执行,每执行一次就会做一次文件合并,执行多次最终…

gitee/github上传远程仓库错误usage: git remote add [<options>] <name> <url>

gitee/github上传远程仓库错误gitee/github上传远程仓库错误错误截图版本错误出现时间错误检查及解决1.网址中含有空格2.关闭翻译软件3.git bash自身问题gitee/github上传远程仓库错误 不知道大家最近有没有碰到这个错误usage: git remote add [<options>] <name>…

[附源码]计算机毕业设计JAVA疫情防控期间网上教学管理

[附源码]计算机毕业设计JAVA疫情防控期间网上教学管理 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM…

Uniapp云开发(Uniapp入门)

前言&#xff1a; 今天这篇文章主要讲解的是Uniapp云开发基础&#xff0c;有了Uniapp云开发&#xff0c;我们就不用需要后端&#xff0c;前端自己就可以实现增删改查。还有就是案例很重要&#xff0c;一定要看&#xff0c;自己去尝试运行试试。 目录超详细一. 什么是Uniapp云开…

分布式配置中心Apollo

Apollo&#xff08;阿波罗&#xff09;是携程框架部门研发的分布式配置中心&#xff0c;能够集中化管理应用不同环境、不同集群的配置&#xff0c;配置修改后能够实时推送到应用端&#xff0c;并且具备规范的权限、流程治理等特性&#xff0c;适用于微服务配置管理场景。 服务…

【Python百日进阶-数据分析】Day326 - plotly.express.scatter_geo():地理散点图

文章目录一、scatter_geo语法二、参数三、返回类型四、实例4.1 常规地理散点图4.2自定义地理散点图4.3GeoPandas 的基本示例一、scatter_geo语法 plotly.express.scatter_geo(data_frame None ,lat None ,lon None ,locations None ,locationmode None ,geojson None , …

MuziDB数据库-0.项目描述

前言 该项目写完也有一段时间了&#xff0c;为了避免以后忘记该项目的一些实现的原理&#xff0c;所以写下这篇博客来记录一下该项目的设计等 项目整体 MuziDB分为前端与后端&#xff0c;前后端交互通过socket进行交互&#xff0c;前端的作用就是读取用户输入并发送到后端进…

mybatis开发要点-insert主键ID获取和多参数传递

1.2、代码示例 二、查询如何传入多个参数 1、使用map传递参数&#xff1b; 2、使用注解传递参数&#xff1b; 3、使用Java Bean的方式传递参数&#xff1b; 一、插入数据主键ID获取 一般我们在做业务开发时&#xff0c;经常会遇到插入一条数据并使用到插入数据的ID情况。如…

网络安全事件应急演练方案

文章目录1 总则1.1 应急演练定义1.2 应急演练目的1.3 应急演练原则1.4 应急演练分类1.4.1 按组织形式划分1.4.2 按内容划分1.4.3 按目的与作用划分1.4.4 按组织范围划分1.5 应急演练规划2 应急演练组织机构2.1 组织单位2.1.1 领导小组2.1.2 策划小组2.1.3 保障小组2.1.4 评估小…

jvm参数造成http请求Read time out

问题描述 线上部署的代码&#xff0c;部署在测试环境突然抛出接口请求Read time out的异常。查看线上日志&#xff0c;接口请求正常。重新启动&#xff0c;部署测试环境代码都没有效果&#xff0c;接口还是必现Read time out。 原因分析&#xff1a; 1. 排查网络原因 直接在…

内核开发-同步场景与概念

进程上下文执行环境还有中断上下文执行环境&#xff0c;并且中断上下文优先级比较高&#xff0c;可以随时打断进程的执行&#xff0c;因此情况更加复杂。内核当中提供了不同的同步机制。比如说信号量&#xff0c;自旋锁&#xff0c;rcu&#xff0c;原子变量等等。他们各自都有自…