linux qt 甘特图,qt绘制甘特图
重写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绘制甘特图相关推荐
- 利用思维导图软件绘制鱼骨图怎样做
思维导图的类型有哪些? 圆圈图 主要用于把一个主题展开来,联想或描述细节.小圈圈是主题,而外面的大圈圈里放的是和这个主题有关的细节或特征 气泡图 由很多泡泡组成,中间一个主题泡泡描述核心主题,周围的属 ...
- html 绘制甘特图,Markdown绘制甘特图教程
日常工作中多个项目并行推进时,很难描述清楚每个任务的进度,以及当前状态.之前也想过用甘特图来管理项目进度,但是绘制甘特图的成本太高,而且不容易掌握.很难在团队中推广普及. 最近在使用Markdown排 ...
- 圆形和多边形雷达图python-Matplotlib绘制雷达图和三维图的示例代码
1.雷达图 程序示例 '''1.空白极坐标图''' import matplotlib.pyplot as plt plt.polar() plt.show() '''2.绘制一个极坐标点''' im ...
- python话雷达图-PYTHON绘制雷达图代码实例
这篇文章主要介绍了PYTHON绘制雷达图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.雷达图 import matplotlib.py ...
- 利用python绘制雪景图_python绘制雪景图
本文实例为大家分享了python绘制雪景图的具体代码,供大家参考,具体内容如下 绘制雪景图,应用到turtle和random. from turtle import * from random imp ...
- python彩虹图_python绘制彩虹图
本文实例为大家分享了python绘制彩虹图的具体代码,供大家参考,具体内容如下 from turtle import * #控制彩虹路径 def path(pen, r, g, b): pen.pen ...
- 棒棒糖也能画成图—— ggplot2绘制棒棒糖图/哑铃图
欢迎关注公众号查看原文 Part 1 :棒棒糖图 棒棒糖图因其形状和棒棒糖相似而得名,具体来看实际上是一个散点和一条线段的组合.棒棒糖图是散点图的一种变体,又与柱状图非常相似,但其在清晰展示数据的同时 ...
- python分析数据走势图_python绘制趋势图的示例
import matplotlib.pyplot as plt #plt用于显示图片 import matplotlib.image as mping #mping用于读取图片 import date ...
- python热图_Python绘制热图
1.matplitlib绘制热图 import random from matplotlib import pyplot as plt from matplotlib import cm from m ...
- python热图_Python 绘制热图
原博文 2019-09-03 16:50 − 1.matplitlib绘制热图 1 import random 2 from matplotlib import pyplot as plt 3 fro ...
最新文章
- 【中文模板】Latex如何写中文文档
- DCMTK:创建,编写和读取细分对象
- cloudare mysql 密码修改_CentOS7.3 LAMP环境搭建私有云NextCloud过程记录
- mac vscode zsh git中文乱码解决方案
- linux rm -rf 根目录,在linux 根目录rm * -rf以后怎么办?
- IDEA统计代码行数
- 转速恒压频比交流变频调速系统Simulink仿真,可观察到电压频率的变比情况以及电动机的转速波形。
- ubuntu虚拟机传文件到当前主机
- 计算机重装系统后无法重启,u盘安装系统之后重启电脑没反应怎么办
- java微博分享代码实例
- 关于虚拟机中安装Ubuntu时界面显示不全的解决办法
- 设计师思维 工程师思维_从设计思维到设计行为
- CSS3 过渡-盒子切换之鼠标经过背景高亮
- C++ 基础概念(二)
- 递归遍历与for循环遍历:递归遍历实现、理解简单
- 春运购买火车票、乘车攻略
- 李炎恢ECMAScript6 / ES6+(二)
- 浅谈HyperLogLog底层算法逻辑
- 蛋白粉是智商税?这6类人喝了,一点都不亏
- 《邪恶八进制技术黑皮书》The Second Edition