QChart模块柱状图,横坐标是时间,纵坐标是数值。动态刷新

在这里插入图片描述

QT += core gui charts

#include <QtCharts/QChartView>
#include <QtCharts/QBarSeries>
#include <QtCharts/QBarSet>
#include <QtCharts/QBarCategoryAxis>
#include <QtCharts/QValueAxis>
#include <QDateTime>
#include <QTimer>

#include <QtCharts>
   // 创建一个柱状图系列
        QBarSeries *series = new QBarSeries();

        // 创建一个柱状图集,用于存储数据
        QBarSet *set = new QBarSet("数据");

        set->append(400);

        series->append(set);

        // 创建一个类别轴,用于显示时间
        QBarCategoryAxis *axisX = new QBarCategoryAxis();
        axisX->setTitleText("时间");

        QString currentTime = QDateTime::currentDateTime().toString("hh:mm:ss");

        axisX->append(currentTime);


        // 创建一个值轴,用于显示数值
        QValueAxis *axisY = new QValueAxis();
        axisY->setTitleText("数值");

        // 创建一个图表,并添加系列和轴
        QChart *chart = new QChart();
        chart->addSeries(series);
        chart->setTitle("动态柱状图示例");
        chart->setAnimationOptions(QChart::SeriesAnimations);
        chart->addAxis(axisX, Qt::AlignBottom);
        chart->addAxis(axisY, Qt::AlignLeft);
        series->attachAxis(axisX);
        series->attachAxis(axisY);

        // 创建一个图表视图,并设置图表
        QChartView *chartView = new QChartView(chart);
        chartView->setRenderHint(QPainter::Antialiasing);

        ui->widget->layout()->addWidget(chartView);
       // ui->widget->layout()->addwidget(chartView);
        // 显示图表视图
        chartView->show();


//todo:测试专用
        // 创建一个定时器,用于定时更新数据
        QTimer *timer=new QTimer;
        // 启动定时器,每隔1秒触发一次
        timer->start(100);

        connect(timer,&QTimer::timeout,[=](){

           // 获取当前时间,并将其转换为字符串格式
           QString currentTime = QDateTime::currentDateTime().toString("hh:mm:ss");

           // 生成一个随机数作为数据点的值
           qreal value = qrand() % 100;

           // 将数据点添加到柱状图集中
           set->append(value);

           // 更新类别轴的范围以适应新的时间标签
           if (axisX->categories().size() > 10) {
               axisX->remove(axisX->categories().at(0));
           }
           axisX->append(currentTime);

           // 更新值轴的范围以适应新的数据点
           axisY->setRange(0, qMax(axisY->max(), value));
       });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值