编程软件:QT
现象:无论怎样改变随机数生成的范围,都无法实现以图表的形式正确的展示出对应的数据;如图所示,只会出现图示的这两种情况;
代码:
随机数字段
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) 将类别轴添加到图表中。
希望这些信息对你有帮助!