使用Qchart实现曲线移动更新
来源:互联网 发布:日本古城建篵坉典 淘宝 编辑:程序博客网 时间:2024/05/19 08:40
主要实现,当数据还未填充整个显示区时,曲线从右到左逐渐出现,当充满显示区后,旧数据用新数据来替代。
效果图如下
加强功能后的效果
添加散点图后的效果
代码如下
main.c文件
#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); return a.exec();}
mainwindow.h文件
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QtCharts/QChartView>#include <QtCharts/QSplineSeries>#include <QtCore/QTimer>#include <QList>#include <QPushButton>QT_CHARTS_USE_NAMESPACEclass MainWindow : public QMainWindow{ Q_OBJECTpublic: MainWindow(int max = 100,QWidget *parent = 0); ~MainWindow();public slots: void handleTimeout(); void handlebutton();private: const int max_count; QTimer m_timer; QPushButton *button ; bool start; QList<int> data; QSplineSeries *series; QChart *chart; QChartView *chartView; int count;};#endif // MAINWINDOW_H
mainwindow.c文件
#include "mainwindow.h"#include <QtCore/QTime>#include <QPushButton>#include <QVBoxLayout>MainWindow::MainWindow(int max,QWidget *parent) : QMainWindow(parent),max_count(max){ count = 0; start = true; qsrand((uint) QTime::currentTime().msec()); series = new QSplineSeries(); chart = new QChart(); chart->legend()->hide(); chart->addSeries(series); chart->setTitle("自动移动曲线"); chart->createDefaultAxes(); chart->axisY()->setRange(-10, 80); chart->axisX()->setRange(0, max_count); chartView = new QChartView(chart); chartView->setRenderHint(QPainter::Antialiasing); button = new QPushButton("停止", this); QObject::connect(button, SIGNAL(pressed()), this, SLOT(handlebutton())); QObject::connect(&m_timer, SIGNAL(timeout()), this, SLOT(handleTimeout())); m_timer.setInterval(100); QVBoxLayout *mainLayout = new QVBoxLayout(); mainLayout->addWidget(chartView); mainLayout->addWidget(button); QWidget* widget = new QWidget(this); widget->setLayout(mainLayout); setCentralWidget(widget); resize(900, 800); m_timer.start();}MainWindow::~MainWindow(){}void MainWindow::handleTimeout(){ int m_y = qrand() % 45 + 5; count++; if(count > max_count) { data.pop_front(); data<<m_y; series->clear(); for(int i =0; i<max_count;i++) { series->append(i, data.at(i)); } } else { data<<m_y; series->clear(); for(int i =0; i<count;i++) { series->append(max_count-i, data.at(count-i-1)); } }}void MainWindow::handlebutton(){ if(start) { start = false; m_timer.stop(); button->setText("启动"); } else { start = true; m_timer.start(); button->setText("停止"); }}
有更好意见的的朋友请留言!
曲线源码
添加散点图后的源代码
需要的朋友可以下载参考!!
阅读全文
0 0
- 使用Qchart实现曲线移动更新
- Qt QChart,利用QChart绘制动态曲线
- QChart的使用
- QT之 QChart 显示实时动态曲线(模拟数据采集过程)
- listview中listitem点击实现沿曲线移动动画效果
- 属性动画实现控件类似贝塞尔曲线轨迹移动效果
- 移动最小二乘法(MLS)曲线曲面拟合C++代码实现
- 属性动画实现控件类似贝塞尔曲线轨迹移动效果
- QChart应用
- Path使用--二阶贝塞尔曲线实现水波效果
- CSS 使用 贝塞尔曲线 碰撞效果实现
- 贝塞尔曲线移动轨迹
- iTween 曲线移动
- 贝塞尔曲线移动 应用
- unity Bezier曲线 移动
- FancyListIndexer 的使用----字母筛选器,使用贝塞尔曲线实现。
- 使用 J2ME 实现移动支付
- 使用贝塞尔曲线算法实现毛笔签名效果
- Java --- 单例模式(二) 七种写法
- javascript----原型总结(1)
- SQL 函数 笔记((Structured Query Language)
- Java| Java异常新理解RuntimeException(不抛出异常,程序运行时出错会有错误信息)
- windows下安装mysql 遇到的问题及解决(道路很曲折)
- 使用Qchart实现曲线移动更新
- cocos2dx编译打包apk报错
- PHP处理小说文章内容
- QT程序打包
- 毕业几年来从别人身上,学到的点点滴滴。
- ajax方法完成选择下拉框级联效果
- PHP简洁之道
- leveldb:TableCache以及BlockCache
- 面试总结