Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7681495
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: 嵌入式

2012-04-01 10:36:11

功能描述:用曲线来显示数据的变化情况。横坐标表示时间T,纵坐标Y。每隔一定时间取一个Y值确定纵坐标


点击(此处)折叠或打开

  1. #include "dialog.h"
  2. #include "ui_dialog.h"
  3. Dialog::Dialog(QWidget *parent) :
  4.     QDialog(parent),
  5.     ui(new Ui::Dialog)
  6. {
  7.     ui->setupUi(this);
  8. // resize(600,500); //窗口大小设置为600*500
  9.     p = t = 0;
  10.     Point.setX(0); /* 初始化起始点的纵坐标为0 */
  11.     Point.setY(0); /* 初始化起始点的横坐标为0 */
  12.     path = new QPainterPath;
  13.     timer = new QTimer(this);
  14.     connect(timer,SIGNAL(timeout()),this,SLOT(timerUpDate())); //关联定时器计满信号和相应的槽函数
  15.     timer->start(500);
  16. }
  17. Dialog::~Dialog()
  18. {
  19.     delete ui;
  20. }
  21. /* 定时时间到 */
  22. void Dialog::timerUpDate()
  23. {
  24.     t += 10;
  25.     Point.setX(t); /* 时间加二秒 */
  26.     Point.setY(qrand() % 100); /* 设置纵坐标值 */
  27.     path->lineTo(Point); /* */
  28.     if(t > width()) /* 当时间值 T大于窗口的宽度时需调整坐标原点 */
  29.         p -= 10; /* 调整坐标原点 */
  30.     update();
  31. }
  32. /* 开启绘画曲线 也就是开启定时器 */
  33. void Dialog::startPainting(void)
  34. {
  35.     timer->start(2000);
  36. }
  37. /* 停止绘画曲线 也就是停止定时器 */
  38. void Dialog::closePainting(void)
  39. {
  40.     timer->stop();
  41. }
  42. /* 重绘事件函数 */
  43. void Dialog::paintEvent(QPaintEvent *)
  44. {
  45.     QPainter painter(this);
  46.     painter.setPen(QPen(Qt::red, 2)); //设置画笔颜色和大小
  47.     painter.translate(p,0); //调整坐标原点
  48.     painter.drawPath(*path); /* 绘制路径 */
  49. }

工程源码: curve.rar   

阅读(27333) | 评论(2) | 转发(1) |
0

上一篇:Qt 2D绘图

下一篇:登陆界面

给主人留下些什么吧!~~

pamire2015-07-15 17:51:45

QPainterPath造成内存不断增加,它绘制的点如何保持在一个范围内?

背包包1112012-04-04 22:04:36

用代码处理图形是个技术或!