重写paintEvent事件,代码如下

```

void xx::paintEvent(QPaintEvent *event){

QPainter painter(this);

//绘制x,y轴,_maxWidth为y轴边距

painter.drawLine(QPoint(_maxWidth,20),QPoint(width(),20));

painter.drawLine(QPoint(_maxWidth, 20), QPoint(_maxWidth,height()));

//绘制刻度,_maxMinutes为x轴最大刻度

int num = (_maxMinutes - _minMinutes) / 5;

int interval = (width() - _maxWidth) / num;

for (int index = 0; index != num;++index){

painter.drawLine(QPoint(_maxWidth + index * interval, 20), QPoint(_maxWidth + index * interval, 15));

painter.drawText(QPoint(_maxWidth + index * interval, 10), QString::number(_minMinutes + index*5));

}

num = _dataMap.size();

interval = (height() - 20) / (num + 2);

//绘制数据_dataMap,QString(y轴坐标名称:起始时间-结束时间& 起始时间-结束时间)

QMap::iterator it = _dataMap.begin();

int index = 1;

for (; it != _dataMap.end(); ++it){

QStringList list = it.value().split(":");

if (list.size() != 2) continue;

painter.drawText(QPoint(0, 20 + interval * index), list[0]);

painter.drawLine(QPoint(_maxWidth, 20 + interval * index), QPoint(_maxWidth  + 5, 20 + interval * index));

for each (QString var in list[1].split("&")){

if (var.isEmpty()) continue;

QStringList interalList = var.split("-");

if (interalList.size() != 2) continue;

int x = (interalList[0].toDouble() / _maxMinutes) * (width() - _maxWidth);

int x1 = (interalList[1].toDouble() / _maxMinutes) * (width() - _maxWidth);

painter.drawLine(QPoint(_maxWidth + x, 20 + interval * index), QPoint(_maxWidth + x1, 20 + interval * index));

}

++index;

}

}

```

效果如下

已经工作的程序员朋友可以关注下我的gzh“程序员成长日志”,分享日常工作中解决的问题即可赚取稿费,大家一起成长~

linux qt 甘特图,qt绘制甘特图相关推荐

  1. 利用思维导图软件绘制鱼骨图怎样做

    思维导图的类型有哪些? 圆圈图 主要用于把一个主题展开来,联想或描述细节.小圈圈是主题,而外面的大圈圈里放的是和这个主题有关的细节或特征 气泡图 由很多泡泡组成,中间一个主题泡泡描述核心主题,周围的属 ...

  2. html 绘制甘特图,Markdown绘制甘特图教程

    日常工作中多个项目并行推进时,很难描述清楚每个任务的进度,以及当前状态.之前也想过用甘特图来管理项目进度,但是绘制甘特图的成本太高,而且不容易掌握.很难在团队中推广普及. 最近在使用Markdown排 ...

  3. 圆形和多边形雷达图python-Matplotlib绘制雷达图和三维图的示例代码

    1.雷达图 程序示例 '''1.空白极坐标图''' import matplotlib.pyplot as plt plt.polar() plt.show() '''2.绘制一个极坐标点''' im ...

  4. python话雷达图-PYTHON绘制雷达图代码实例

    这篇文章主要介绍了PYTHON绘制雷达图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.雷达图 import matplotlib.py ...

  5. 利用python绘制雪景图_python绘制雪景图

    本文实例为大家分享了python绘制雪景图的具体代码,供大家参考,具体内容如下 绘制雪景图,应用到turtle和random. from turtle import * from random imp ...

  6. python彩虹图_python绘制彩虹图

    本文实例为大家分享了python绘制彩虹图的具体代码,供大家参考,具体内容如下 from turtle import * #控制彩虹路径 def path(pen, r, g, b): pen.pen ...

  7. 棒棒糖也能画成图—— ggplot2绘制棒棒糖图/哑铃图

    欢迎关注公众号查看原文 Part 1 :棒棒糖图 棒棒糖图因其形状和棒棒糖相似而得名,具体来看实际上是一个散点和一条线段的组合.棒棒糖图是散点图的一种变体,又与柱状图非常相似,但其在清晰展示数据的同时 ...

  8. python分析数据走势图_python绘制趋势图的示例

    import matplotlib.pyplot as plt #plt用于显示图片 import matplotlib.image as mping #mping用于读取图片 import date ...

  9. python热图_Python绘制热图

    1.matplitlib绘制热图 import random from matplotlib import pyplot as plt from matplotlib import cm from m ...

  10. python热图_Python 绘制热图

    原博文 2019-09-03 16:50 − 1.matplitlib绘制热图 1 import random 2 from matplotlib import pyplot as plt 3 fro ...

最新文章

  1. 【中文模板】Latex如何写中文文档
  2. DCMTK:创建,编写和读取细分对象
  3. cloudare mysql 密码修改_CentOS7.3 LAMP环境搭建私有云NextCloud过程记录
  4. mac vscode zsh git中文乱码解决方案
  5. linux rm -rf 根目录,在linux 根目录rm * -rf以后怎么办?
  6. IDEA统计代码行数
  7. 转速恒压频比交流变频调速系统Simulink仿真,可观察到电压频率的变比情况以及电动机的转速波形。
  8. ubuntu虚拟机传文件到当前主机
  9. 计算机重装系统后无法重启,u盘安装系统之后重启电脑没反应怎么办
  10. java微博分享代码实例
  11. 关于虚拟机中安装Ubuntu时界面显示不全的解决办法
  12. 设计师思维 工程师思维_从设计思维到设计行为
  13. CSS3 过渡-盒子切换之鼠标经过背景高亮
  14. C++ 基础概念(二)
  15. 递归遍历与for循环遍历:递归遍历实现、理解简单
  16. 春运购买火车票、乘车攻略
  17. 李炎恢ECMAScript6 / ES6+(二)
  18. 浅谈HyperLogLog底层算法逻辑
  19. 蛋白粉是智商税?这6类人喝了,一点都不亏
  20. 《邪恶八进制技术黑皮书》The Second Edition

热门文章

  1. 记一次惨烈的电话面试题
  2. MySQL(四)InnoDB中一棵B+树能存多少行数据
  3. 第三章 垃圾收集器与内存分配策略(待续)
  4. Hadoop权威指南学习笔记一
  5. 全心加入web前端开发,向上吧!
  6. 【Git入门之十四】Git GUI
  7. 各数据类型的取值范围及占用字节数。。
  8. libgc 加 .mak 在 vc6 vs2008 中的编译方法
  9. 别人的Linux私房菜(19)认识与分析日志文件
  10. MyBatis数据库连接的基本使用-补充Mapper映射器