Chinaunix首页 | 论坛 | 博客
  • 博客访问: 631646
  • 博文数量: 1008
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5175
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-31 09:44
文章分类
文章存档

2012年(1008)

我的朋友

分类:

2012-08-01 11:02:12

原文地址:QT 曲线绘制 作者:luozhiyong131

功能描述:用曲线来显示数据的变化情况。横坐标表示时间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   

阅读(197) | 评论(0) | 转发(0) |
0

上一篇:登陆界面

下一篇:Qt 2D绘图

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