重写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. 《工程热力学沈维道童钧耕第四版-带书签》高清pdf下载链接

    <工程热力学沈维道童钧耕第四版-带书签>高清pdf下载链接 百度网盘链接:https://pan.baidu.com/s/1dWksA8O3y2JSfIQy5lrU5g 提取码:7x9w ...

  2. alfred workflow 开发

    alfred python demo

  3. Ubuntu中安装Hadoop

    安装前 1,更新apt sudo apt-get update   会让你输入密码(自己登录Ubuntu的时候设置的),输入密码不会显示在终端面板上,确定自己敲对之后点回车就行. 2,安装SSH服务器 ...

  4. CSS中“~”(波浪号)、“,”(逗号)、“+”(加号)、“>”(大于号)、“ ”(空格)详解

    “~”:$('pre ~ brother')表示获取pre节点的后面的所有兄弟节点,相当于nextAll()方法: “+”:$('pre + nextbrother')表示获得pre节点的下一个兄弟节 ...

  5. wx.request出现400 bad request的问题

    wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' , y: '' }, header: { 'content-type': 'a ...

  6. 关于php抑错方法

    在循环里,如果@不能用的话,就使用try catch,是可以的

  7. 2019-2020-1 20199310《Linux内核原理与分析》第一周作业

    1.问题描述 1.1 问题一 Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,探究根目录下主要文件用途. 1.2 问题二 有一个非常重要的文件(passw ...

  8. (第九篇)Iptables详解

    常见的网络攻击形式 1.拒绝服务攻击:DOS 2.分布式拒绝服务攻击 DDOS 3.漏洞入侵 4.口令猜测 以上内容简单了解,具体可自行百度,此处不必知晓. Linux防火墙基础 Linux防火墙体系 ...

  9. 微软的 Sysinternals 系统管理工具包,例如可找出自动启动的流氓软件

    作者:Kenny链接:https://www.zhihu.com/question/52157612/answer/153886419来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  10. Testing for the End of a File (Windows 的异步 IO)

    The ReadFile function checks for the end-of-file condition (EOF) differently for synchronous and asy ...