QT生成随机数据并实时更新对应的动态图表

编程软件:QT
现象:无论怎样改变随机数生成的范围,都无法实现以图表的形式正确的展示出对应的数据;如图所示,只会出现图示的这两种情况;

img

img

代码:
随机数字段

void Widget::initTimer()
{
    id1 = startTimer(1000);                  // 开启一个1秒定时器,返回其ID
}

void Widget::timerEvent(QTimerEvent *event)
   {
       if (event->timerId() == id1)
       {      
           qsrand(QTime::currentTime().msec());
           FlightParameters1 = qrand() % 10;
           FlightParameters2 = qrand() % 10;
           FlightParameters3 = qrand() % 10;
           FlightParameters4 = qrand() % 10;
           FlightParameters5 = qrand() % 10;
       }
   }

柱状图字段

QChart *Widget::creatBarChart() const
{
    QBarSet *set0 = new QBarSet("Jane");
//   *set0<<1<<2<<3<<4<<5<<6;
    *set0<//创建一个序列对象,并将上面的数据添加到序列中
    QBarSeries *bseries = new QBarSeries();
    bseries->append(set0);

    //创建一个QChart类的对象chart,并将series对象加入到chart中
    QChart *chart = new QChart();
    chart->addSeries(bseries);
    //设置动画
    chart->setAnimationOptions(QChart::SeriesAnimations);//设置动画

    //创建坐标
    //首先创建一个字符串列表,作为横坐标
    QStringList *categories = new QStringList();
    *categories<<"A"<<"B"<<"C"<<"D"<<"E";
    //创建一个类别轴对象
    QBarCategoryAxis *axis = new QBarCategoryAxis();
    axis->append(*categories);//添加横坐标
    chart->createDefaultAxes();//设置默认坐标轴,虽然后面的设置会覆盖默认坐标轴,但是也要在后面设置之前进行初始设置
    chart->setAxisX(axis,bseries);//将类别轴对象(横坐标月)和序列对象(每个月的数据)作为参数,设置X轴。
    //设置图例
    chart->legend()->setVisible(false);//图例不可见
    chart->legend()->setAlignment(Qt::AlignBottom);//将图例放在表底
    chart->setTheme(QChart::ChartThemeBlueCerulean);//主题颜色设置为天然色
    return chart;
}

疑惑点:

为何
*set0<<1<<2<<3<<4<<5<<6;
可以实现,但
*set0<;
对应的随机数却无法实现,且开启随机数时生成的数据总是超出了范围,甚至是达到了十位数。

想要达到的结果:能过按照指定的时间,定时生成一些随机数,并将这些随机数以动态柱状图的形式展现,实现实时更新数据图表的功能。

恳请解惑,(´ᴗ`ʃƪ)感谢!

望采纳!!点击该回答右侧的“采纳”按钮即可采纳!!
你想要在图表上正确展示数据,你需要在 creatBarChart 函数中设置图表的坐标轴。类别轴和值轴都需要被设置。

你可以使用Qt Charts类中的QValueAxis对象来创建值轴。例如,你可以使用以下代码来创建一个值轴对象:

QValueAxis *axisY = new QValueAxis;
axisY->setRange(0, 10); // 设置值轴的范围
axisY->setLabelFormat("%i"); // 设置值轴的标签格式

然后,你可以使用 chart->setAxisY(axisY, bseries) 将值轴对象和序列对象设置为图表的值轴。

最后,你需要使用 chart->addAxis(axisY, Qt::AlignLeft) 将值轴添加到图表中。

此外,你还可以使用Qt Charts类中的QBarCategoryAxis对象来创建类别轴。你可以使用以下代码来创建一个类别轴对象:

QBarCategoryAxis *axisX = new QBarCategoryAxis();
axisX->append(*categories); // 添加类别

然后,你可以使用 chart->setAxisX(axisX, bseries) 将类别轴对象和序列对象设置为图表的类别轴。

最后,你需要使用 chart->addAxis(axisX, Qt::AlignBottom) 将类别轴添加到图表中。

希望这些信息对你有帮助!