300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Qt工作笔记-动态折线图(x轴坐标会改变)

Qt工作笔记-动态折线图(x轴坐标会改变)

时间:2023-04-20 23:55:40

相关推荐

Qt工作笔记-动态折线图(x轴坐标会改变)

运行截图如下:

逻辑很简单,下面直接放代码:

widget.h

#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QChartView>#include <QValueAxis>#include <QTimerEvent>#include <QLineSeries>#include <time.h>QT_CHARTS_USE_NAMESPACEnamespace Ui {class Widget;}class Widget : public QWidget{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();void timerEvent(QTimerEvent *event);void initWidget();public slots:void pbtnClicked();private:Ui::Widget *ui;QLineSeries *m_series1;QChart *m_chart;//x轴&y轴QValueAxis *m_axisX;QValueAxis *m_axisY;int m_x;int m_timerId;int m_lowPos;};#endif // WIDGET_H

main.cpp

#include "widget.h"#include <QApplication>int main(int argc, char *argv[]){QApplication a(argc, argv);Widget w;w.show();return a.exec();}

widget.cpp

#include "widget.h"#include "ui_widget.h"#include <QDebug>Widget::Widget(QWidget *parent) :QWidget(parent),m_x(1),m_lowPos(20),ui(new Ui::Widget){ui->setupUi(this);initWidget();this->setWindowTitle(tr("CSDN IT1995"));srand((unsigned)time(NULL));}void Widget::initWidget(){m_series1=new QLineSeries();QPen pen(QColor(120,152,2));m_series1->setPen(pen);m_series1->setName(tr("访问量"));//首先随便建几个m_series1->append(0,5);m_series1->append(1,7);m_chart=new QChart();m_chart->addSeries(m_series1);m_chart->createDefaultAxes();m_chart->setTitle(tr("动态折线图"));//设置坐标m_axisX=new QValueAxis();m_axisX->setTitleText(tr("时间/秒"));m_axisY=new QValueAxis();m_axisY->setTitleText(tr("人数/个"));m_chart->setAxisX(m_axisX,m_series1);m_chart->setAxisY(m_axisY,m_series1);ui->widget->setChart(m_chart);connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(pbtnClicked()));}void Widget::pbtnClicked(){m_timerId=startTimer(80);}void Widget::timerEvent(QTimerEvent *event){if(event->timerId()==m_timerId){int num=rand()%1501+1;m_x++;qDebug()<<"m_x:"<<m_x<<" "<<"m_lowPos:"<<m_lowPos;m_series1->append(m_x,num);m_axisX->setRange(0,m_x);m_axisY->setRange(0,1500);if(m_x-20>m_lowPos){m_axisX->setRange(m_lowPos++,m_x);}}}Widget::~Widget(){delete ui;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。