代码:动态曲线绘制,坐标轴从左向右平移,以及坐标轴靠近边界的设置
如下图所示:文中只涉及了主要代码段
void PlotChartA::initChart()
{
m_chartView = new QChart();
m_chartView->setEnabled(true);
//m_chartView->setTitle("Kv-Vacuum");
m_chartView->legend()->hide();
m_chartView->setTheme(QtCharts::QChart::ChartTheme::ChartThemeDark);
m_chartView->layout()->setContentsMargins(0,0,0,0);
m_chartView->setMargins(QMargins(0,0,0,0));
m_chartView->setBackgroundRoundness(0);
vaX = new QValueAxis();
vaY1 = new QValueAxis();
vaY2 = new QValueAxis();
splineSeries1 = new QSplineSeries();
splineSeries2 = new QSplineSeries();
QFont labelsFont;
labelsFont.setPixelSize(10); //参数字号,数字越小,字就越小
vaX->setRange(0, 10);
vaX->setTickCount(5);
vaX->setLabelsFont(labelsFont);
vaX->setLabelsColor(QColor(0, 255, 0));
vaX->setGridLineVisible(false); //隐藏背景网格Y轴框线
vaY1->setRange(0, 200);
vaY1->setTickCount(6);
vaY1->setLabelsColor(QColor(255,0, 0));
vaY1->setGridLineVisible(false);
vaY1->setLabelsFont(labelsFont);
vaY1->setLabelFormat("%d");//设置坐标轴小数点位数
vaY2->setRange(0, 70);
vaY2->setTickCount(8);
vaY2->setLabelsColor(QColor(0, 0, 255));
vaY2->setGridLineVisible(false);
vaY2->setLabelFormat("%d");//设置坐标轴小数点位数
m_chartView->addAxis(vaX, Qt::AlignBottom);
m_chartView->addAxis(vaY1, Qt::AlignLeft);
m_chartView->addAxis(vaY2, Qt::AlignRight);
m_chartView->addSeries(splineSeries1);
m_chartView->addSeries(splineSeries2);
splineSeries1->attachAxis(vaX);
splineSeries1->attachAxis(vaY1);
splineSeries1->setColor(QColor(255, 0, 0));
splineSeries1->setUseOpenGL();// 开启openGL加速
splineSeries2->attachAxis(vaX);
splineSeries2->attachAxis(vaY2);
splineSeries2->setColor(QColor(0, 0, 255));
splineSeries2->setUseOpenGL();
ui->widgetPlotA->setChart(m_chartView);
}
//实现画线函数,动态更新
void PlotChartA::drawLine()
{
static int i=0;
static int j=0;
AInjectionTime.second = QDateTime::currentDateTime();
key = AInjectionTime.first.msecsTo(AInjectionTime.second)/1000.0;
value1 = pressure_testA[i];
value2 = temp_testA[j];
i++;
j++;
if(i>=200)
{
i=0;
}
if(j>=64)
{
j=0;
}
if(splineSeries1->count()>10)
{
vaX->setRange(splineSeries1->count()-10,splineSeries1->count());
}
splineSeries1->append(key,value1);
splineSeries2->append(key,value2);
qDebug()<<"key:"<<key<<"value2"<<value2;
ui->widgetPlotA->setChart(m_chartView);
}