《QT实用小工具·二十八》基于qt开发的各种曲线

server/2024/12/22 2:51:26/

1、概述
源码放在文章末尾

该项目实现了各种曲线的绘制,下面是项目的demo演示:
在这里插入图片描述
项目部分代码如下:

#include "frmsmoothcurve.h"
#include "ui_frmsmoothcurve.h"
#include "smoothcurve.h"
#include "qpainter.h"
#include "qdatetime.h"
#include "qdebug.h"#define TIMEMS QTime::currentTime().toString("hh:mm:ss zzz")frmSmoothCurve::frmSmoothCurve(QWidget *parent) : QWidget(parent), ui(new Ui::frmSmoothCurve)
{ui->setupUi(this);//初始化随机数种子srand(QDateTime::currentDateTime().toMSecsSinceEpoch());//随机生成曲线上的点int x = -300;while (x < 300) {datas << QPointF(x, rand() % 300 - 100);x += qMin(rand() % 30 + 5, 300);}//正常曲线pathNormal.moveTo(datas.at(0));for (int i = 1; i < datas.size(); ++i) {pathNormal.lineTo(datas.at(i));}//平滑曲线1//qDebug() << TIMEMS << "createSmoothCurve start";pathSmooth1 = SmoothCurve::createSmoothCurve(datas);//qDebug() << TIMEMS << "createSmoothCurve stop";//平滑曲线2//qDebug() << TIMEMS << "createSmoothCurve2 start";pathSmooth2 = SmoothCurve::createSmoothCurve2(datas);//qDebug() << TIMEMS << "createSmoothCurve2 stop";ui->ckShowPoint->setChecked(true);connect(ui->ckShowPoint, SIGNAL(clicked(bool)), this, SLOT(update()));connect(ui->rbtnPathNormal, SIGNAL(clicked(bool)), this, SLOT(update()));connect(ui->rbtnPathSmooth1, SIGNAL(clicked(bool)), this, SLOT(update()));connect(ui->rbtnPathSmooth2, SIGNAL(clicked(bool)), this, SLOT(update()));
}frmSmoothCurve::~frmSmoothCurve()
{delete ui;
}void frmSmoothCurve::paintEvent(QPaintEvent *)
{QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);painter.translate(width() / 2, height() / 2);painter.scale(1, -1);//画坐标轴painter.setPen(QColor(180, 180, 180));painter.drawLine(-250, 0, 250, 0);painter.drawLine(0, 150, 0, -150);//根据选择绘制不同的曲线路径painter.setPen(QPen(QColor(80, 80, 80), 2));if (ui->rbtnPathSmooth1->isChecked()) {painter.drawPath(pathSmooth1);} else if (ui->rbtnPathSmooth2->isChecked()) {painter.drawPath(pathSmooth2);} else {painter.drawPath(pathNormal);}//如果曲线上的点可见则显示出来if (ui->ckShowPoint->isChecked()) {painter.setPen(Qt::black);painter.setBrush(Qt::gray);foreach (QPointF point, datas) {painter.drawEllipse(point, 3, 3);}}
}

源码下载


http://www.ppmy.cn/server/7264.html

相关文章

设计模式--建造者模式

项目源代码 应用场景 当你需要创建一个对象&#xff0c;而这个对象的构建过程相对复杂&#xff0c;并且需要进行多个步骤来完成时&#xff0c;建造者模式可以派上用场。举个例子&#xff0c;假设你正在开发一个游戏&#xff0c;需要创建一个角色对象。这个角色对象有很多属性…

封装原生html的table处理方法【参数类似eltable】

直接跑html即可 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>封装原生talbe</title> </…

XiaodiSec day035 Learn Note 小迪渗透学习笔记

XiaodiSec day035 Learn Note 小迪渗透学习笔记 记录得比较凌乱&#xff0c;不尽详细 day35 前言 关于 xss 入门 xss 开始 是一个前端的漏洞 数据输入输出的地方容易产生 分类: 反射性存储型DOM 型很多很多 产生过程使用<script>alert(1)</script>弹个窗 …

Android 自定义SwitchPreference

1. 为SwitchPreference 添加背景&#xff1a;custom_preference_background.xml <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"><item><shape android:s…

java读取Excel表格数据

java读取Excel表格数据 环境说明项目结构1.controller层2.service层实现层StudentModel.java类 使用的Maven依赖效果示例一效果示例二文档截图第一页第二页 postman请求说明其他说明 环境说明 jdk1.8&#xff0c;springboot2.5.3 项目结构 1.controller层 package com.exam…

广东省道路货物运输资格证照片回执可手机线上办理

广东省道路运输资格证是从事道路运输业务、危险品道路运输人员的必要证件&#xff0c;而在办理该证件的过程中&#xff0c;驾驶员照片回执是一项必不可少的材料。随着科技的发展和移动互联网的普及&#xff0c;现在办理驾驶员照片回执已经不再需要亲自前往照相馆&#xff0c;而…

2、关于数据库事务那些事

目录 1、什么是事务&#xff1f; 2、介绍下数据库事务&#xff1f; 3、并发事务会带来什么问题&#xff1f; 3.1、不可重复读和幻读有什么区别&#xff1f; 4、数据库隔离级别有哪几种&#xff1f; 5、MySQL默认使用隔离级别是啥&#xff1f; 6、如何控制并发事务&#…

VUE - pdfmake的中文字库支持

前端VUE导出pdf。 jspdf这个插件对中文支持不够友好&#xff0c;用html的canvas转图片后还是很模糊。最终选用了pdfmake插件。 使用 1.引入pdf npm install pdfmake --save 2.页面import import pdfMake from pdfmake/build/pdfmake; import pdfFonts from pdfmake/build…