重写paintEvent事件,代码如下

void xx::paintEvent(QPaintEvent *event){
QPainter painter(this); //绘制x,y轴,_maxWidth为y轴边距
painter.drawLine(QPoint(_maxWidth,),QPoint(width(),));
painter.drawLine(QPoint(_maxWidth, ), QPoint(_maxWidth,height()));
//绘制刻度,_maxMinutes为x轴最大刻度
int num = (_maxMinutes - _minMinutes) / ;
int interval = (width() - _maxWidth) / num; for (int index = ; index != num;++index){
painter.drawLine(QPoint(_maxWidth + index * interval, ), QPoint(_maxWidth + index * interval, ));
painter.drawText(QPoint(_maxWidth + index * interval, ), QString::number(_minMinutes + index*));
} num = _dataMap.size();
interval = (height() - ) / (num + );
//绘制数据_dataMap,QString(y轴坐标名称:起始时间-结束时间& 起始时间-结束时间)
QMap<int, QString>::iterator it = _dataMap.begin();
int index = ;
for (; it != _dataMap.end(); ++it){
QStringList list = it.value().split(":");
if (list.size() != ) continue; painter.drawText(QPoint(, + interval * index), list[]);
painter.drawLine(QPoint(_maxWidth, + interval * index), QPoint(_maxWidth + , + interval * index)); for each (QString var in list[].split("&")){
if (var.isEmpty()) continue;
QStringList interalList = var.split("-");
if (interalList.size() != ) continue;
int x = (interalList[].toDouble() / _maxMinutes) * (width() - _maxWidth);
int x1 = (interalList[].toDouble() / _maxMinutes) * (width() - _maxWidth);
painter.drawLine(QPoint(_maxWidth + x, + interval * index), QPoint(_maxWidth + x1, + interval * index));
} ++index;
}
}

效果如下

原文来自微信公众号"程序员成长日志",已经工作的程序员朋友可以关注下公众号“程序员成长日志”,分享日常工作中解决的问题即可赚取稿费,大家一起成长~

qt绘制甘特图的更多相关文章

  1. 使用Excel 2007绘制甘特图

    本文将教大家如何使用Excel 2007制作甘特图.Excel并未提供甘特图类型,但还是可以绘制甘特图的,方法就是通过对堆积条形图类型进行自定义,使之显示任务.任务工期和层次结构. 下面的过程可帮助创 ...

  2. Python使用Plotly绘图工具,绘制甘特图

    今天来讲一下如何使用Python 的绘图工具Plotly来绘制甘特图的方法 甘特图大家应该了解熟悉,就是通过条形来显示项目的进度.时间安排等相关情况的. 我们今天来学习一下,如何使用ployly来绘制 ...

  3. 如何使用Excel绘制甘特图

    摘自:http://www.mifengtd.cn/articles/how-to-create-a-gantt-chart-in-excel.html 再造<优秀的时间管理和项目管理工具> ...

  4. Qt kdChart 甘特图案例

    KDChart  甘特图在Qt中的加载使用案例,代码来自官方 mainwindow.h /******************************************************* ...

  5. python的matplotlib.pyplot绘制甘特图

    博主本来就想简单地找一下代码,画一幅甘特图,结果百度之后发现甘特图的代码基本都不是用matplotlib库,但是像柱状图等统计图通常都是用这个库进行绘制的,所以博主就花了一些时间,自己敲了一份代码,简 ...

  6. 第二阶段:1.流程图:9.excel绘制甘特图

    后面的框都是日期 可以以一个月为周期计算或者周或者... 因为产品经理应该严格把控产品的时间 因此甘特图特别有必要 注意:任务拆解的越细 把控度越强 然后对格式进行设置 注意时间下面可以用颜色填充来表 ...

  7. echarts绘制甘特图

      在setoption之后添加这段代码: window.addEventListener('resize', function () { myChart.resize();   }); 图表就能随着 ...

  8. 自己做的js甘特图插件

    版权所有,禁止转载 内容都在代码中,上图上代码! 代码 <!DOCTYPE html> <html> <head> <title>ganttu.html ...

  9. [转]用Excel制作甘特图并管理项目

    对于比较简单的项目管理,或绘制甘特图,选用电子表格工具——比如价格高也最强大的Excel.开源的OpenOffice.免费的WPS——可能比项目管理软件更方便. 1. XL-Easy Gantt 模板 ...

随机推荐

  1. G. 大树的水塘

    已知每块石头中的规格是1×1×1,水塘的长度为N,宽度为1,在第i位置,大树放了ai个石头 设大树建造的水塘蓄水量为V 请你求出在长度和宽度不变的情况下,建造一个蓄水量不小于V的水塘最多可以节约多少石 ...

  2. nginx配置虚拟主机、反向代理和负载均衡

    为了实现这个功能,需要修改nginx的配置文件,将nginx.conf清理一下,使结构更清晰. worker_processes ; events { worker_connections ; } h ...

  3. [PHP][thinkphp5] 学习三:函数助手实例说明

    来源:http://blog.csdn.net/lunsunhuan1825/article/details/71086487 load_trait:快速导入Traits,PHP5.5以上无需调用 / ...

  4. 数据源管理 | PostgreSQL环境整合,JSON类型应用

    本文源码:GitHub·点这里 || GitEE·点这里 一.PostgreSQL简介 1.和MySQL的比较 PostgreSQL是一个功能强大的且开源关系型数据库系统,在网上PostgreSQL和 ...

  5. 对JavaScript中的this的理解

    什么是this: 解析器(就是浏览器)在调用函数时,每次都会向函数内部传递两个隐含的参数: 这两个隐含参数其中一个就是this(还有一个是arguments,用来接收函数的实参),this指向的是一个 ...

  6. 算法笔记刷题5(PAT A1025)

    第一次上手PAT的甲级题目,瑟瑟发抖(英语不好对着题目愣了半天) 这一题的要点是使用sort函数. 使用sort函数必须使用 #include <algorithm> using name ...

  7. Django新手十个开发指导

    下面是关于Django新手开发中的一些建议,大家可以参考一下~~ 1,不要将项目名称包含在引用代码里 比如你创建了一个名为"project"的项目,包含一个名为"app& ...

  8. Session服务器之Redis

    Session服务器之Redis Redis与Memcached的区别内存利用率:使用简单的key value (键值对)存储的话,Mermcached 的内存利用率更高,而如果Redis采用hash ...

  9. 徐州I

    #include<bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=a;i<=b;++i) #defi ...

  10. 解决从dockerhub上下载debian:jessie失败

    解决从dockerhub上下载debian:jessie失败 笔者使用docker build 构建镜像出现下面的错误 Step 1/12 : FROM debian:jessie Get https ...