问题的现象
建立并初始化时间轴图表后,设置几个点但是未能在表中绘制出来。
代码
splineSeries = new QSplineSeries(this);
splineSeries->setName("spline");
QPen red(Qt::red);
red.setWidth(3);
splineSeries->setPen(red);
chart = new QChart();
chart->legend()->hide();
chart->addSeries(splineSeries);
chart->setTitle(tr("电池充电曲线"));
chart->setTheme(QChart::ChartThemeDark);
chart->setAnimationOptions(QChart::AllAnimations);/**< 动画*/
/*时间坐标轴X*/
/*
QString str = current_time.toString("yyyy-MM-dd hh:mm:ss ddd");
*/
m_axisX = new QDateTimeAxis;
m_axisX->setFormat("hh:mm:ss");
chart->addAxis(m_axisX, Qt::AlignBottom);
/*初始化设置时间坐标轴范围*/
m_axisX->setRange(GetDateTimeFromSec(QDateTime::currentSecsSinceEpoch())
,GetDateTimeFromSec(QDateTime::currentSecsSinceEpoch()+DISPLAY_RANGE));
m_axisX->setTickCount(DISPLAY_RANGE_TICK_COUNT);
m_axisX->setLabelsVisible(true);
m_axisX->setTitleText(tr("时间轴"));
/*数值轴Y*/
m_axisY = new QValueAxis();
chart->addAxis(m_axisY, Qt::AlignLeft);
m_axisY->setRange(0, 100);
m_axisY->setLabelFormat("%i");
m_axisY->setTickCount(DISPLAY_RANGE_TICK_COUNT);
m_axisY->setLabelsVisible(true);
m_axisY->setTitleText(tr("电量轴"));
/*坐标轴加入到曲线*/
splineSeries->attachAxis(m_axisX);
splineSeries->attachAxis(m_axisY);
ui->charge_draw_QChartView->setChart(chart);
/*抗锯齿*/
ui->charge_draw_QChartView->setRenderHint(QPainter::Antialiasing);
ui->charge_draw_QChartView->setRubberBand(QChartView::HorizontalRubberBand);
/*手动设置几个点*/
splineSeries->append(QDateTime::QDateTime::currentSecsSinceEpoch(), 100);
splineSeries->append(QDateTime::QDateTime::currentSecsSinceEpoch()+100, 50);
splineSeries->append(QDateTime::QDateTime::currentSecsSinceEpoch()+200, 60);
splineSeries->append(QDateTime::QDateTime::currentSecsSinceEpoch()+300, 100);
问题处理
最后发现问题出现在设置X时间坐标轴上,在初始化时,x轴的起点为至当前时间经过的时间,最大值为加上一个数值。
设置x轴需要以ms单位数值提供
/*当前secondCount秒转为QDateTime*/
QDateTime current_time = QDateTime::fromSecsSinceEpoch(secondCount);
/*加入点*/
splineSeries->append(current_time.toMSecsSinceEpoch(), y_value);