Qt画笔实现折线图-程序员宅基地

参考:https://www.cnblogs.com/lsgxeva/p/7821550.html
效果图:

 



void BrokenLine::paintEvent(QPaintEvent *event)
{
   
    // 折线上的点
    static QList<QPointF> points = QList<QPointF>() << QPointF(10, 40) << QPointF(100, 100) << QPointF(200, 100)
                                                    << QPointF(300, 100) << QPointF(330, 80) << QPointF(350, 70);

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true);
    painter.setPen(QPen(Qt::black, 2));

    QPainterPath path(points[0]);
    for (int i = 1; i < points.size(); ++i)
    {
   
        path.lineTo(points[i]);

    }

    // 绘制 path
    painter.drawPath(path);


    // 绘制折线上的标记点
    painter.setBrush(Qt::gray);
    int ellipse_size = 4;
    for (int i = 0; i < points.size(); ++i) {
   
        painter.drawEllipse(points[i], ellipse_size, ellipse_size);


        QString text = QString::number(points[i].y());
        QFontMetrics fm = painter.fontMetrics();
        int height_font = fm.height();
        int width_text = fm.width(text);

        QPointF textPos(points[i].x()-(width_text/2), points[i].y()-(ellipse_size/2)-(height_font/2));

        painter.drawText(textPos, text);
    }


    return QWidget::paintEvent(event);

}

转载于:https://www.cnblogs.com/zhangxuan/p/10138082.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30341735/article/details/97944687

智能推荐

1. SimMechanics/Multibody入门-程序员宅基地

文章浏览阅读9.8k次,点赞43次,收藏167次。这篇博客主要介绍利用Matlab的SimMechanics/Multibody实现简单的单摆运动仿真。_simmechanics

Android 性能优化探究,作为移动开发程序员-程序员宅基地

文章浏览阅读870次,点赞22次,收藏28次。总之啊,家里没矿的同学们,如果你们想以后的日子过得好一些,多想想你们的业余时间怎么安排吧;技术方面的提升肯定是重中之重,但是技术外的一些“软实力”也不能完全忽视,很多时候升职确实是因为你的技术足够强,但也与你的“软实力”密切相关在这我也分享一份大佬自己收录整理的Android学习PDF+架构视频+面试文档+源码笔记,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这些都是我闲暇还会反复翻阅并给下属员工学习的精品资料。

Delphi防止多实例运行的两种方法《转》-程序员宅基地

文章浏览阅读83次。在学习Delphi时,遇到需要程序单实例运行的时候,经过查阅,暂时发现以下两种比较简单的方法,可以防止程序多实例运行,各有优劣,据需选择。方法一,添加以下unit即可,优点是可激活已存在的程序窗口,即使已最小化(包括最小化到托盘),缺点是可能存在与其他程序的互斥(可自行修改STR_UNIQUE的值以尽量减少该可能性)。代码如下://工程引用此单元就能防止同时出现多个实例u..._delphi 多实例

曼彻斯特编码与解码(含驱动源码)-程序员宅基地

文章浏览阅读875次,点赞27次,收藏23次。曼彻斯特编码方式, 这种编码方式利用信号的边沿来表示二进制数据“0”和“1”,比如信号的上身沿表示“1”,下降沿表示“0”,而这种跳变一般发生在位帧的中间。

2020 DevOps工程技术实践类教程-程序员宅基地

文章浏览阅读162次。你好,我是泽阳,在DevOps领域实践了多年,借助公司项目机会从端到端的对项目进行实施改造。在经过实践后,项目通过了信通院发布的《DevOps持续交付标准三级》评估。在此过程中不断的实施..._泽阳 devops

网安学习记录1 ms17010漏洞-程序员宅基地

文章浏览阅读56次。使用nmap对win7进行端口扫描。

随便推点

2023年互联网黑灰产研究年度报告-程序员宅基地

文章浏览阅读54次。下载报告去公众号:硬核刘大后台回复“黑灰产”,即可下载完整PDF文件。更多报告内容,可加微信:chanpin628领取。(ps:加过微信:chanpin628 的不要再加,分享的内容一样,有一个号就行。)申明:报告版权威胁猎人所有,此处仅限分享学习使用,如有侵权,请联系小编做删除处理。..._【威胁猎人】2023年互联网黑灰产研究年度报告.pdf

[C/C++]游戏地图制作_c++ 如何做地图-程序员宅基地

文章浏览阅读705次。利用二维数组实现游戏地图_c++ 如何做地图

Ubuntu 12.04.4 LTS 部署cap-程序员宅基地

文章浏览阅读715次。一.系统环境jim@mode:~$ cat /etc/issueUbuntu 12.04.4 LTS \n \ljim@mode:~$ uname -raLinux mode 3.11.0-15-generic#25~precise1-Ubuntu SMP Thu Jan 30 17:39:31 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux二..._after this operation, 2,048 b of additional disk space will be used.

我见过最全的剖析QEMU原理的文章[Z]_no qemu-程序员宅基地

文章浏览阅读1.2w次。转自:http://people.cs.nctu.edu.tw/~chenwj/dokuwiki/doku.php?id=qemu How To Become A Hacker 写给新手程序员的一封信目录建置 QEMUUser ModeSPARCPowerP_no qemu

Dart —— 基础数据类型 Number String Boolean List Map Set Rune Symbol_dart number-程序员宅基地

文章浏览阅读714次。内建类型文章目录Dart 语言支持以下内建类型:NumberStringBooleanListSetMapRuneSymbolDart 语言支持以下内建类型:NumberStringBooleanList (也被称为 Array)MapSetRune (用于在字符串中表示 Unicode 字符)Symbol这些类型都可以被初始化为字面量。 例如, 'this is a s..._dart number

PAT甲级刷题记录——1089 Insert or Merge (25分)_pat甲级1089最后一个测试点-程序员宅基地

文章浏览阅读193次。According to Wikipedia:Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort removes one element from the input data, ..._pat甲级1089最后一个测试点