Qt画五角星,简单图表

五角星:

代码:

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QPaintEvent>
#include <QPainter>
#include <QPainterPath>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);setWindowTitle("Draw Five-Pointed Star");//setFixedSize(300, 300);setPalette(Qt::red);update();
}Widget::~Widget()
{delete ui;
}void Widget::paintEvent(QPaintEvent *event)
{QPainter painter(this);//启用抗锯齿渲染,这可以让绘制的图形看起来更加平滑,减少锯齿状的边缘painter.setRenderHint(QPainter::Antialiasing);//启用文字的抗锯齿渲染,这可以让绘制的文字更加清晰,减少锯齿状的边缘。painter.setRenderHint(QPainter::TextAntialiasing);qreal R=100;const qreal Pi=3.14159;//将 72 度这个角度转换成弧度制的值,并存储在 deg 变量中qreal deg=Pi*72/180;//五角星的中点为原点,QPoint(R,0)是第一个点QPoint points[5]={QPoint(R,0),//根据qCos(deg)和qSin(deg)算出在坐标轴的位置,“-”表示Y轴向下(表示方向)QPoint(R*qCos(deg),-R*qSin(deg)),QPoint(R*qCos(2*deg),-R*qSin(2*deg)),QPoint(R*qCos(3*deg),-R*qSin(3*deg)),QPoint(R*qCos(4*deg),-R*qSin(4*deg))};//设置字体QFont font;font.setPointSize(14);painter.setFont(font);//设置画笔QPen penLine;//设置画笔的线宽为 2 个像素。penLine.setWidth(2);//设置画笔的颜色为蓝色。penLine.setColor(Qt::blue);//设置画笔的线条样式为实线。penLine.setStyle(Qt::SolidLine);//设置线条端点的样式为平头,除了平头,还有圆头和方头等样式可选。penLine.setCapStyle(Qt::FlatCap);painter.setPen(penLine);//设置画刷QBrush brush;brush.setColor(Qt::yellow);//设置画刷的填充样式为实心brush.setStyle(Qt::SolidPattern);painter.setBrush(brush);//创建了一个 QPainterPath 对象,用于描述五角星的绘制路径QPainterPath starPath;//将绘制路径的起点移动到 points[0] 这个坐标。starPath.moveTo(points[0]);//从当前位置(points[0])绘制一条直线到 points[2] 这个坐标。starPath.lineTo(points[2]);starPath.lineTo(points[4]);starPath.lineTo(points[1]);starPath.lineTo(points[3]);starPath.closeSubpath();//在五角星的每个顶点处,添加了一个文字标签。starPath.addText(points[0],font,"1");starPath.addText(points[1],font,"2");starPath.addText(points[2],font,"3");starPath.addText(points[3],font,"4");starPath.addText(points[4],font,"5");//绘制第一个五角星painter.save();//将坐标系原点移动到 (100, 120) 这个位置。painter.translate(100,120);//使用之前定义的 starPath 绘制五角星图形。painter.drawPath(starPath);//在五角星的中心位置(0, 0)绘制文本标签 "s1"。painter.drawText(0,0,"s1");//恢复 QPainter 对象之前保存的状态,这样就不会影响后续的绘图操作。painter.restore();//绘制第二个五角星painter.translate(300,120);//对坐标系进行缩放,缩放比例为 0.8 x 0.8,这样绘制出来的五角星会比之前的小 20%。painter.scale(0.8,0.8);//对坐标系进行旋转,旋转角度为 90 度。painter.rotate(90);painter.drawPath(starPath);//在第二个五角星的中心位置(0, 0)绘制文本标签 "s2"painter.drawText(0,0,"s2");//绘制第三个五角星//将 QPainter 对象的变换矩阵重置为单位矩阵,这样可以清除之前的位移、缩放和旋转操作,回到初始状态。painter.resetTransform();painter.translate(500,120);painter.rotate(-145);painter.drawPath(starPath);painter.drawText(0,0,"s3");/*在Qt中,当一个事件发生时,比如鼠标点击或键盘输入,Qt会将这些事件传递给相应的窗口部件进行处理。* 处理完事件后,窗口部件可以决定是否接受这个事件,或者将其传递给父部件继续处理。event->accept(); 这行代码表示当前窗口部件已经处理完该事件,不需要再传递给父部件处理。这样可以防止事件被多个部件重复处理,提高程序的处理效率。*/event->accept();
}

运行截图:

简单图标表:

widget.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtCharts>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QChartView *chartView=new QChartView(this);QChart *chart=new QChart();chart->setTitle("简单函数曲线");chartView->setChart(chart);this->setCentralWidget(chartView);//序列QLineSeries *series0=new QLineSeries();QLineSeries *series1=new QLineSeries();series0->setName("Sin曲线");series1->setName("Cos曲线");chart->addSeries(series0);chart->addSeries(series1);qreal t=0,y1,y2,intv=0.1;int cnt=100;for (int i = 0; i < cnt; ++i) {y1=qSin(t);series0->append(t,y1);y2=qCos(t);series1->append(t,y2);t+=intv;}//创建坐标轴QValueAxis *axisX=new QValueAxis();axisX->setRange(0,10);axisX->setTitleText("时间(秒)");QValueAxis *axisY=new QValueAxis();axisY->setRange(-2,2);axisY->setTitleText("数值");//坐标轴添加到图表和序列中chart->addAxis(axisX,Qt::AlignBottom);chart->addAxis(axisY,Qt::AlignLeft);series0->attachAxis(axisX);series0->attachAxis(axisY);series1->attachAxis(axisX);series1->attachAxis(axisY);
}MainWindow::~MainWindow()
{delete ui;
}

运行截图:

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

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

相关文章

基于WPF技术的换热站智能监控系统13--控制设备开关

1、本节目的 本次工作量相对有点大&#xff0c;有点难度&#xff0c;需要熟悉MVVM模式&#xff0c;特别是属性绑定和命令驱动&#xff0c;目标是点击水泵开关&#xff0c;让风扇转动或停止&#xff0c;风扇连接的管道液体流动或静止。 &#xff0c;具体对应关系是&#xff1a;…

9.8k star!一款小而美的开源物联网操作系统:RT-Thread

介绍 RT-Thread是一款主要由中国开源社区主导开发的开源实时操作系统&#xff08;RTOS&#xff09;。它不仅是一个实时操作系统内核&#xff0c;也是一个完整的应用系统&#xff0c;包含了实时、嵌入式系统相关的各个组件&#xff0c;如TCP/IP协议栈、文件系统、libc接口、图形…

【算法专题--链表】删除排序链表中的重复元素 -- 高频面试题(图文详解,小白一看就懂!!)

目录 一、前言 二、题目描述 三、解题方法 ⭐双指针 四、总结与提炼 五、共勉 一、前言 删除排序链表中的重复元素这道题&#xff0c;可以说是--链表专题--&#xff0c;最经典的一道题&#xff0c;也是在面试中频率最高的一道题目&#xff0c;通常在面试中&#xff0…

记录一个flink跑kafka connector遇到的问题

【报错】 D:\Java\jdk1.8.0_231\bin\java.exe "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2022.2.3\lib\idea_rt.jar56647:D:\Program Files\JetBrains\IntelliJ IDEA 2022.2.3\bin" -Dfile.encodingUTF-8 -classpath D:\Java\jdk1.8.0_231\jre\lib\cha…

手机照片免费数据恢复软件EasyRecovery2024免费版下载

大家好&#xff01;今天我要给大家推荐一款非常棒的软件——EasyRecovery。相信大家都知道&#xff0c;电脑中的重要文件一旦丢失&#xff0c;对我们的工作和学习都会产生很大的影响。 而EasyRecovery软件就是专门解决这个问题的利器&#xff01;它能够帮助我们快速、有效地恢…

【CSS in Depth2精译】1.1 层叠

CSS 本质上就是声明规则&#xff0c;并让这些特定的规则在各种情况下生效。一个类添加到某个元素上&#xff0c;则应用这个类包含的这一些样式&#xff1b;元素 X 是元素 Y 的一个子节点&#xff0c;则应用另一些样式。浏览器于是根据这些规则&#xff0c;判定所有样式生效的具…

最长不下降子序列LIS详解

最长不下降子序列指的是在一个数字序列中&#xff0c;找到一个最长的子序列&#xff08;可以不连续&#xff09;&#xff0c;使得这个子序列是不下降&#xff08;非递减&#xff09;的。 假如&#xff0c;现有序列A[1&#xff0c;2&#xff0c;3&#xff0c;-1&#xff0c;-2&…

【Android】三种常见的布局LinearLayout、GridLayout、RelativeLayout

【Android】三种常见的布局LinearLayout、GridLayout、RelativeLayout 在 Android 开发中&#xff0c;布局&#xff08;Layout&#xff09;是构建用户界面的基础。通过合理的布局管理&#xff0c;可以确保应用在不同设备和屏幕尺寸上都能有良好的用户体验。本文将简单介绍 And…

Go微服务框架Kratos中makefile命令的使用方法及报错处理

运用 kratos 微服务框架开发项目时&#xff0c;可以使用提供的 makefile 中的命令自动且快速生产相关代码&#xff0c;提高开发效率。 krotos中makefile文件内容如下&#xff1a; GOHOSTOS:$(shell go env GOHOSTOS) GOPATH:$(shell go env GOPATH) VERSION$(shell git descri…

java程序什么时候需要在运行的时候动态修改字节码对象

一、java程序什么时候需要在运行的时候动态修改字节码对象 我认为有两种场景&#xff0c;一种是无法修改源代码的时候&#xff1b;另外一种是功能增强的时候。 1、无法修改源代码 举个例子&#xff0c;java程序依赖的第三方的jar包中发现了bug&#xff0c;但是官方还没有修复…

工程设计问题-步进锥滑轮问题

该问题的主要目标是用5个变量使4阶锥皮带轮的重量最小&#xff0c;其中4个变量是皮带轮每个台阶的直径&#xff0c;最后一个变量是滑轮的宽度。该问题包含11个非线性约束&#xff0c;以保证传动功率必须为0.75马力。 Abhishek Kumar, Guohua Wu, Mostafa Z. Ali, Rammohan Mall…

启动mysql 3.5时出现 MySql 服务正在启动 . MySql 服务无法启动。

有可能是端口冲突 netstat -ano | findstr :3306运行这段代码出现类似&#xff1a; 可以看到端口 3306 已经被进程 ID 为 6284 的进程占用。为了启动新的 MySQL 服务&#xff0c;我们需要停止这个进程或更改新服务的端口&#xff1a; 1、终止进程 taskkill /PID 6284 /F2、确…

【计算机毕业设计】基于Springboot的车辆管理系统【源码+lw+部署文档】

包含论文源码的压缩包较大&#xff0c;请私信或者加我的绿色小软件获取 免责声明&#xff1a;资料部分来源于合法的互联网渠道收集和整理&#xff0c;部分自己学习积累成果&#xff0c;供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者…

贷款投资决策和常用财务函数

前段时间上了一门excel操作的课&#xff0c;本文结合其中介绍财务函数以及投资决策分析相关的部分&#xff0c;对贷款中的现金流计算进行深入的分析。 以等额本息产品为例进行实操计算&#xff0c;假设某产品本金12000元&#xff0c;期限12&#xff0c;IRR利率24%。每期还款113…

项目:双人五子棋对战-对战模块(6)

完整代码见: 邹锦辉个人所有代码: 测试仓库 - Gitee.com 当玩家进入到游戏房间后, 就要开始一局紧张而又刺激的五子棋对战了, 本文将就前端后端的落子与判断胜负的部分作详细讲解. 模块详细讲解 约定前后端交互的接口 首先是建立连接后, 服务器需要生成一些游戏的初始信息(可…

c语言——扫雷游戏(简易版)

目录 前言游戏设计 前言 什么是扫雷游戏&#xff1f; 游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子&#xff0c;同时避免踩雷&#xff0c;踩到一个雷即全盘皆输。 这个游戏对于c语言的初学者来说难度还是挺大的&#xff0c;那我就实现一个初学者也能快速学…

黄仁勋最新建议:找到一门技艺,用一生去完善、磨炼!

“你可能会找到你的英伟达。我希望你们将挫折视为新的机遇。” 黄仁勋职业生涯中最大的教诲并非来自导师或科技公司 CEO&#xff0c;而是来自他在国际旅行时遇到的一位园丁。 近日在加州理工学院毕业典礼上发表演讲时&#xff0c;黄仁勋向毕业生分享了自己在日本京都的小故事。…

2012-2022年各省新质生产力指数数据(含原始数据+结果)

2012-2022年各省新质生产力指数数据&#xff08;含原始数据结果&#xff09; 1、时间&#xff1a;2012-2022年 2、指标&#xff1a;province、year、平均受教育年限、劳动者人力资本结构、高等院校在校学生结构、人均GDP元、在岗职工工资&#xff1a;元、三产从业人员比重、机…

各种机器学习算法的应用场景分别是什么(比如朴素贝叶斯、决策树、K 近邻、SVM、逻辑回归最大熵模型)?

2023简直被人工智能相关话题席卷的一年。关于机器学习算法的热度&#xff0c;也再次飙升&#xff0c;网络上一些分享已经比较老了。那么今天借着查询和学习的机会&#xff0c;我也来浅浅分享下目前各种机器学习算法及其应用场景。 为了方便非专业的朋友阅读&#xff0c;我会从算…

电子设计教程基础篇(电容)

文章目录 前言一、电容原理1.原理2.公式 二、电容种类1.结构1、固定电容2、可变电容3、微调电容 2.介质材料1、气体介质电容1、空气电容2、真空电容3、充气式电容 2、固体介质电容1、无机1、云母电容2、陶瓷电容1、瓷片电容2、独石电容 3、玻璃釉电容&#xff08;CI&#xff09…