可以帮忙看看吗,我这个代码为什么不能显示实时的折线图吗,当前只能显示图表,不显示折线
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QtCharts/QChart>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtWidgets/QMainWindow>
#include <QtCharts/QValueAxis>
#include <QTimer>
#include <QRandomGenerator>
#include <QLineSeries>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
public:
void onTimerTimeout();
private:
QtCharts::QChartView* chartView; //显示图表
};
#endif // WIDGET_H
widget.cpp
```c++
#include "widget.h"
#include <QVBoxLayout>
#include <QtCharts/QValueAxis>
#include <QDebug>
#include <QPushButton>
#include <QDateTime>
#include <QDateTimeAxis>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
QtCharts::QChart* chart = new QtCharts::QChart();
chartView = new QtCharts::QChartView(this);
chartView->setChart(chart);
chartView->setRenderHint(QPainter::Antialiasing); //设置抗拒齿
QtCharts::QLineSeries *series = new QtCharts::QLineSeries;
series->setName("hello");
chart->addSeries(series);
//创建Y坐标
QtCharts::QValueAxis* axisY = new QtCharts::QValueAxis;
axisY->setRange(0,100);
axisY->setTickCount(5);
chart->setAxisY(axisY);
//设置启动放置阴影
chart->setDropShadowEnabled(true);
//创建X坐标
QtCharts::QDateTimeAxis *axisX = new QtCharts::QDateTimeAxis;
//格式
axisX->setFormat("hh:mm:ss");
//设置竖条数量
axisX->setTickCount(5);
chart->setAxisX(axisX,series);
//初始化坐标
//设置最大值坐标值 系统时间当前时间
chart->axisX()->setMin(QDateTime::currentDateTime().addSecs(-5*30));
//设置最大值坐标值 系统时间后5*30秒
chart->axisX()->setMax(QDateTime::currentDateTime().addSecs(5*30));
QTimer* timer = new QTimer(this );
timer->setInterval(1000); //设置间隔
connect(timer, &QTimer::timeout, this, &Widget::onTimerTimeout);
chartView->setMinimumSize(1000, 600); // 设置图表显示大小
chart->legend()->setVisible(true); //将图表的图例设置为可见
chartView->show();
timer->start();
}
Widget::~Widget()
{
}
void Widget::onTimerTimeout()
{
//生成随机数
int valueY = QRandomGenerator::global()->bounded(0,100);
//qDebug() << "Added data point: (" << valueX << "," << valueY << ")";
//获取当前时间
QDateTime currentTime = QDateTime::currentDateTime();
//获取初始化的qchart
QtCharts::QChart *qchart =(QtCharts::QChart *)chartView->chart();
//获取初始化的series;
QtCharts::QLineSeries *series0 = (QtCharts::QLineSeries *)chartView->chart()->series().at(0);
series0->append(currentTime.toMSecsSinceEpoch(),valueY);
qchart->axisX()->setMin(QDateTime::currentDateTime().addSecs(-5*30));
qchart->axisX()->setMax(QDateTime::currentDateTime().addSecs(5*30));
}
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}