【QCustomPlot实战系列】QCPGraph折线图的渐变

news2024/12/25 1:00:41

包含折线图渐变效果以及QCPAxisTickerDateTime的使用
QCPGraph折线图的渐变

static QBrush GenerateLinearBrush(Qt::Orientation orientation)
{
    qreal x = 1;
    qreal y = 0;
    if (orientation == Qt::Vertical) {
        x=0;
        y=1.5;
    }

    QLinearGradient gradient(0, y, x, 0);
    gradient.setCoordinateMode(QLinearGradient::ObjectMode);
    gradient.setColorAt(0, QColor(255, 255, 180));
    gradient.setColorAt(1, QColor(190, 68, 76));
    return { gradient };
}

static QCPGraph* GenerateGraph(QCustomPlot *parentPlot, Qt::Orientation orientation)
{
    QVector<double> x;
    QVector<double> y = {
            116, 129, 135, 86, 73, 85, 73, 68, 92, 130, 245, 139, 115, 111, 309,
            206, 137, 128, 85, 94, 71, 106, 84, 93, 85, 73, 83, 125, 107, 82,
            44, 72, 106, 107, 66, 91, 92, 113, 107, 131, 111, 64, 69, 88, 77, 83,
            111, 57, 55, 60
    };

    x.resize(y.count());

    auto startDateTime = QDateTime(QDate(2000, 6, 5)).toSecsSinceEpoch();

    for (int i = 0; i < y.count(); ++i) {
        x[i] = double(startDateTime + i * 3600 * 24);
    }

    auto ticker = QSharedPointer<QCPAxisTickerDateTime>::create();
    ticker->setDateTimeFormat("yyyy-MM-dd");
    ticker->setTickOrigin(x.first());
    ticker->setTickCount(10);

    auto axisRect = new QCPAxisRect(parentPlot);
    axisRect->axis(QCPAxis::atBottom)->setTicker(ticker);

    auto graph = new QCPGraph(axisRect->axis(QCPAxis::atBottom), axisRect->axis(QCPAxis::atLeft));
    graph->setData(x, y);
    graph->setPen(QPen(GenerateLinearBrush(orientation), 2));

    axisRect->axis(QCPAxis::atBottom)->rescale();
    axisRect->axis(QCPAxis::atLeft)->setRange(0, 350);

    auto text = new QCPTextElement(parentPlot);
    auto font = text->font();
    font.setPointSize(18);
    text->setFont(font);
    text->setTextColor(QColor(70, 70, 70));
    if (orientation == Qt::Vertical) {
        text->setText("Gradient along the y axis");
    } else {
        text->setText("Gradient along the x axis");
    }
    parentPlot->plotLayout()->addElement(text);
    parentPlot->plotLayout()->addElement(axisRect);
    QAbstractPlotItem::applyDefaultStyle(axisRect);

    return graph;
}

void LineGradient::initCustomPlot(QCustomPlot *parentPlot)
{
    parentPlot->plotLayout()->clear();
    parentPlot->plotLayout()->setFillOrder(QCPLayoutGrid::foRowsFirst);

    auto margin = new QCPLayoutElement(parentPlot);
    margin->setMinimumSize(0, 50);
    margin->setMaximumSize(QWIDGETSIZE_MAX, 50);
    GenerateGraph(parentPlot, Qt::Vertical);
    parentPlot->plotLayout()->addElement(margin);
    GenerateGraph(parentPlot, Qt::Horizontal);
}

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

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

相关文章

pdf转换成cad,这几个cad转换小妙招快码住!

在数字设计领域&#xff0c;PDF&#xff08;Portable Document Format&#xff09;和CAD&#xff08;Computer-Aided Design&#xff09;文件格式各有其独特之处。PDF常用于文件共享和打印&#xff0c;而CAD则是工程师和设计师们进行精确绘图和建模的必备工具。然而&#xff0c…

第六十八:iview里的table,每行数据如果有满足条件的怎么更改颜色

当然了&#xff0c;肯定又是插槽&#xff0c;话不多说直接贴图 话不多说&#xff0c;直接贴代码 <Table :columns"columns" :data"data" border show-summary height"300" sum-text"汇总" v-else :summary-method"handleSumma…

帮助你简易起步一个BLOG(博客搭建)项目

Blog项目 后端项目结构1. 项目初始化2. 详细步骤3.postman测试 前端1. 项目初始化2. 详细步骤 本章节是为了帮助你起步一个完整的前后端分离项目。 前端技术栈&#xff1a; react、vite、mantine、tailwind CSS、zustand、rxjs、threejs 后端技术栈&#xff1a;nodemon、nodej…

《数据结构与算法基础 by王卓老师》学习笔记——1.4算法与算法分析

一、算法 1.1算法的研究内容 1.2算法的定义 1.3算法的描述 以下是算法的自然语言描述 以下是算法的传统流程图表示 以下是NS流程图表示 1.4算法和程序的区别与联系 1.5算法的五个特性 1.6算法设计的要求 Robustness也称为鲁棒性 二、算法分析 2.1算法时间效率的度量 2.1.1事…

CS-隐藏防朔源-数据转发-中间件反向代理-Apache

目录 1、代理机安装Apache: 2、中间件设置转发&#xff1a; 添加代理 3、重启Apache服务 4、CS监听器配置转发机IP 实战情况下还是要准备两台外网服务器. --还是做个中转 1、代理机安装Apache: apt-get install apache2 a2enmod proxy proxy_ajp proxy_balancer proxy_co…

VScode远程连接时卡住

将报错文件删除 ### 查找文件(base) ~ find /home -name 5c3e652f63e798a5ac2f31ffd0d863669328dc4c /home/cszx/.vscode-server/data/clp/99e4e0e4dad86d47de9777231596fd92.zh-cn/5c3e652f63e798a5ac2f31ffd0d863669328dc4c ### 删除(base) ~ rm -rf /home/cszx/.vscode-ser…

ScheduledThreadPoolExecutor和时间轮算法比较

最近项目中需要用到超时操作&#xff0c;对于不是特别优秀的timer和DelayQueue没有看。 Timer 是单线程模式。如果某个 TimerTask 执行时间很久&#xff0c;会影响其他任务的调度。Timer 的任务调度是基于系统绝对时间的&#xff0c;如果系统时间不正确&#xff0c;可能会出现…

安装Django Web框架

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 Django是基于Python的重量级开源Web框架。Django拥有高度定制的ORM和大量的API&#xff0c;简单灵活的视图编写&#xff0c;优雅的URL&#xff0c;适…

SyncFolders文件备份—办公人员必备

SyncFolders支持在两个或多个文件夹之间同步文件&#xff0c;用户可以将重要文件同步到多个位置&#xff0c;如备份硬盘、网络共享文件夹或云存储等。通过设定同步规则&#xff0c;可以自动备份和同步更新&#xff0c;减少手动操作的繁琐&#xff0c;确保文件的安全和可访问性。…

C++编程(五)单例模式 友元

文章目录 一、单例模式&#xff08;一&#xff09;概念&#xff08;二&#xff09;实现方式1. 饿汉式2. 懒汉式 二、友元&#xff08;一&#xff09;概念&#xff08;二&#xff09;友元函数1.概念2.语法格式3. 使用示例访问静态成员变量访问非静态成员变量 &#xff08;三&…

vue3集成Echarts,自定义ToolBox时无法监听参数变化

问题描述 在vue中集成echart中自定义ToolBox工具的点击事件&#xff0c;并将里面的typeBar赋给data中的变量&#xff0c;随后用watch监听这个变量的变化&#xff0c;发现监听不到&#xff01;&#xff01;&#xff01;&#xff01; 解决方案&#xff1a;一直以为是watch不能监…

接口自动化测试框架实战(Pytest+Allure+Excel)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1. Allure 简介 Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具&#xff0c;它不…

java根据枚举值动态获取对象bean调用方法示例

1.创建操作枚举 Getter AllArgsConstructor public enum CustomerOperatorType {/*** 用户操作记录分类*/ACCOUNT("账户冻结/解冻"),LEVEL("等级记录"),SCORE( "积分记录");private final String desc; } 2.公共基础类 import lombok.AllAr…

word图题表题公式按照章节编号(不用题注)

预期效果&#xff1a; 其中3表示第三章&#xff0c;4表示第3章里的第4个图。标题、公式编号也是类似的。 为了达到这种按照章节编号的效果&#xff0c;原本可以用插入题注里的“包含章节编号” 但实际情况是&#xff0c;这不仅需要一级标题的序号是用“开始->多级列表”自动…

编码注入

Url&#xff1a;http://www.xxxxxxxx/newsdetail.php?idMjgxOA 判断参数Id存在数字型注入,试了报错注入不行&#xff0c;只能去盲注了 验证Poc1&#xff1a;idMTg4OS8x 等同于&#xff1a;id1889/1 poc2&#xff1a;idMTg4OS8w 等同于&#xff1a;id1889/0 /1 /0 用asci…

数据结构与算法笔记:高级篇 - B+树:MySql数据库索引是如何实现的?

概述 作为一名软件开发工程师&#xff0c;你对数据库肯定再熟悉不过了。MySQL 作为主流的数据库存储系统&#xff0c;它在我们的业务开发中&#xff0c;有着举足轻重的地位。在工作中&#xff0c;为了加速数据库中数据的查找速度&#xff0c;我们常用的处理思路是&#xff0c;…

Java基础教程:入门篇Java基础概念Java入门实例

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把手教你开发炫酷的vbs脚本制作(完善中……&#xff09; 4、牛逼哄哄的 IDEA编程利器技巧(编写中……&#xff09; 5、面经吐血整理的 面试技…

Acitity跳转延时10s会导致anr的时序问题讨论

背景&#xff1a; 针对前些天直播时候&#xff0c;主要讲解是launcher启动app&#xff0c;Activity onResume延时10s不会anr&#xff0c;但是Activity内部activity1跳转activity2就会anr问题展开了讨论 https://mp.weixin.qq.com/s/_uA5yKUTUw-9H-tWxGNK9g 这个原因为啥已经在…

Tomcat WEB站点部署

目录 1、使用war包部署web站点 2、自定义默认网站目录 3、部署开源站点&#xff08;jspgou商城&#xff09; 对主机192.168.226.22操作 对主机192.168.226.20操作 上线的代码有两种方式&#xff1a; 第一种方式是直接将程序目录放在webapps目录下面&#xff0c;这种方式…

昇思25天学习打卡营第03天|张量Tensor

何为张量&#xff1f; 张量&#xff08;Tensor&#xff09;是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数&#xff0c;这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 &#x1d45b;维空间内&#xff0c;有  &#x1d45b;&a…