qt绘制甘特图
重写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绘制甘特图的更多相关文章
- 使用Excel 2007绘制甘特图
本文将教大家如何使用Excel 2007制作甘特图.Excel并未提供甘特图类型,但还是可以绘制甘特图的,方法就是通过对堆积条形图类型进行自定义,使之显示任务.任务工期和层次结构. 下面的过程可帮助创 ...
- Python使用Plotly绘图工具,绘制甘特图
今天来讲一下如何使用Python 的绘图工具Plotly来绘制甘特图的方法 甘特图大家应该了解熟悉,就是通过条形来显示项目的进度.时间安排等相关情况的. 我们今天来学习一下,如何使用ployly来绘制 ...
- 如何使用Excel绘制甘特图
摘自:http://www.mifengtd.cn/articles/how-to-create-a-gantt-chart-in-excel.html 再造<优秀的时间管理和项目管理工具> ...
- Qt kdChart 甘特图案例
KDChart 甘特图在Qt中的加载使用案例,代码来自官方 mainwindow.h /******************************************************* ...
- python的matplotlib.pyplot绘制甘特图
博主本来就想简单地找一下代码,画一幅甘特图,结果百度之后发现甘特图的代码基本都不是用matplotlib库,但是像柱状图等统计图通常都是用这个库进行绘制的,所以博主就花了一些时间,自己敲了一份代码,简 ...
- 第二阶段:1.流程图:9.excel绘制甘特图
后面的框都是日期 可以以一个月为周期计算或者周或者... 因为产品经理应该严格把控产品的时间 因此甘特图特别有必要 注意:任务拆解的越细 把控度越强 然后对格式进行设置 注意时间下面可以用颜色填充来表 ...
- echarts绘制甘特图
在setoption之后添加这段代码: window.addEventListener('resize', function () { myChart.resize(); }); 图表就能随着 ...
- 自己做的js甘特图插件
版权所有,禁止转载 内容都在代码中,上图上代码! 代码 <!DOCTYPE html> <html> <head> <title>ganttu.html ...
- [转]用Excel制作甘特图并管理项目
对于比较简单的项目管理,或绘制甘特图,选用电子表格工具——比如价格高也最强大的Excel.开源的OpenOffice.免费的WPS——可能比项目管理软件更方便. 1. XL-Easy Gantt 模板 ...
随机推荐
- SVN版本控制器的使用说明(详细过程)
SVN使用教程总结 SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本. Subv ...
- C#_关键字:Lock的解释和使用
定义 lock关键字,互斥锁,通过锁住某一对象从而将语句块({})里面的代码设置为临界区. 线程在线性执行代码时若遇到互斥锁,必须先申请互斥锁的访问权,若访问成功,则继续线性访问互斥锁后的临界区代码块 ...
- Python-selenium 元素定位
1.id定位find_element_by_id() 通过id属性定位元素,如果id是动态变化的话不能用id来进行定位 2.name定位find_element_by_name() 通过name属性定 ...
- 用网线连接Windows和Linux台式机,并实现Linux共享Windows的WiFi网络
前言 由于工作需要,需要利用网线将自己的笔记本和Linux台式机进行连接,实现Windows可以远程登录Linux机器,并实现Linux共享Windows的WiFi网络. 网上的很多方法可以实现两台机 ...
- linux常用命令--打包和压缩文件
bunzip2 file1.bz2 解压一个叫做 'file1.bz2'的文件 bzip2 file1 压缩一个叫做 'file1' 的文件 gunzip file1.gz 解压一个叫做 'file1 ...
- 词向量表示:word2vec与词嵌入
在NLP任务中,训练数据一般是一句话(中文或英文),输入序列数据的每一步是一个字母.我们需要对数据进行的预处理是:先对这些字母使用独热编码再把它输入到RNN中,如字母a表示为(1, 0, 0, 0, ...
- 新增记录txt文档
StringBuilder s = new StringBuilder(); s.Append("[" + dt.Rows[i]["Store"].Conver ...
- MySQL数据库缓存操作
安装: 启动的话: -d:以后台的方式进行: -l:选择监听指定的ip服务地址:-m:给他分配多大的内存:-p:端口号默认的端口为11211的服务端口: 另一个: 安装:telnet 这个可以用来测试 ...
- 双链表【参照redis链表结构】
参照了Redis里面的双链表结构,可以说是完全复制粘贴,redis的双链表还是写的很通俗易懂的,没有什么花里胡哨的东西,但是redis还有个iter迭代器的结构来遍历链表.我这里就没有实现了,只是实现 ...
- 小白也能轻松上手的Prometheus教程
这篇文章将承接此前关于使用Prometheus配置自定义告警规则的文章.在本文中,我们将demo安装Prometheus的过程以及配置Alertmanager,使其能够在触发告警时能发送邮件,但我们将 ...