最写一个小的测试用例,通过串口收到的数据进行绘制曲线图,要求是在一个QChart上画一条线,然后要四个QChart上分别画四条线,我现在搞出来一个运行都会只显示最下面的那个图,上面的图就不显示是为什么呢?
我之前认为是x y轴以及QChart画笔的问题,但是我新增了 还是显示不出来全部的图,就很迷忙,求各位解答俺。
代码只放了部分,我觉得其他的代码跟这个问题没啥联系。
x.h文件
QChart *chart,*chart1,*chart2,*chart3; //图表组件,可理解为画笔,用它画曲线
QSplineSeries *series,*series1,*series2,*series3; //曲线指针 实例 series为光滑曲线
QDateTimeAxis *axisX,*axisX1,*axisX2,*axisX3; //x坐标轴 时间轴
QValueAxis *axisY,*axisY1,*axisY2,*axisY3; //y坐标轴
x.cpp文件
void x::Init_chart()
{
chartView = new QChartView(this);
chartView->resize(1291,583);
chartView->setRenderHint(QPainter::Antialiasing); //设置抗锯齿
//PWM曲线
chart = new QChart();
chart->legend()->setVisible(false);
chartView->setChart(chart); //把chart显示到窗口上
QVBoxLayout *PWMLayout = new QVBoxLayout();
PWMLayout->addWidget(chartView);
ui->PWM->setLayout(PWMLayout);
series = new QSplineSeries;
series->setName("PWM");
chart->addSeries(series);
//坐标
axisX = new QDateTimeAxis();
axisX->setGridLineVisible(true); //网格可见
axisX->setTickCount(5); //设置坐标轴格数
axisX->setFormat("hh:mm:ss"); //设置时间显示格式
axisX->setTitleText("t/s");
axisY = new QValueAxis();
axisY->setTickCount(5);
axisY->setRange(0,100); //设置Y轴范围
axisY->setGridLineVisible(true); //设置Y轴网格显示
//axisY->setTickCount(2); //轴上有多少个标记数目
//axisY->setMinorTickCount(5); //主要刻度之间有多少网格线
axisY->setTitleText("PWM");
axisY->setLabelFormat("%d"); //图例的格式 %d为十进制显示
chart->addAxis(axisX,Qt::AlignBottom); //设置坐标轴位于chart中的位置
chart->addAxis(axisY,Qt::AlignLeft);
series->attachAxis(axisX); //把数据添加到坐标轴上
series->attachAxis(axisY);
//angle曲线
chart1 = new QChart();
chart1->legend()->setVisible(false);
chartView->setChart(chart1);
QVBoxLayout *angleLayout = new QVBoxLayout();
angleLayout->addWidget(chartView);
ui->angle->setLayout(angleLayout);
series1 = new QSplineSeries;
series1->setName("angle");
chart1->addSeries(series1);
//坐标
axisX1 = new QDateTimeAxis();
axisX1->setGridLineVisible(true);//网格可见
axisX1->setTickCount(5); //设置坐标轴格数
axisX1->setFormat("hh:mm:ss"); //设置时间显示格式
axisX1->setTitleText("t/s");
axisY1 = new QValueAxis();
axisY1->setTickCount(5);
axisY1->setRange(0,100); //设置Y轴范围
axisY1->setGridLineVisible(true); //设置Y轴网格显示
axisY1->setTitleText("角度");
axisY1->setLabelFormat("%d"); //图例的格式 %d为十进制显示
chart1->addAxis(axisX1,Qt::AlignBottom); //设置坐标轴位于chart中的位置
chart1->addAxis(axisY1,Qt::AlignLeft);
series1->attachAxis(axisX1); //把数据添加到坐标轴上
series1->attachAxis(axisY1);
//speed曲线
chart2 = new QChart();
chart2->legend()->setVisible(false);
chartView->setChart(chart2);
QVBoxLayout *speedLayout = new QVBoxLayout();
speedLayout->addWidget(chartView);
ui->speed->setLayout(speedLayout);
series2 = new QSplineSeries;
series2->setName("speed");
chart2->addSeries(series2);
//坐标
axisX2 = new QDateTimeAxis();
axisX2->setGridLineVisible(true);//网格可见
axisX2->setTickCount(5); //设置坐标轴格数
axisX2->setFormat("hh:mm:ss"); //设置时间显示格式
axisX2->setTitleText("t/s");
axisY2 = new QValueAxis();
axisY2->setTickCount(5);
axisY2->setRange(0,100); //设置Y轴范围
axisY2->setGridLineVisible(true); //设置Y轴网格显示
axisY2->setTitleText("速度");
axisY2->setLabelFormat("%d"); //图例的格式 %d为十进制显示
chart2->addAxis(axisX2,Qt::AlignBottom); //设置坐标轴位于chart中的位置
chart2->addAxis(axisY2,Qt::AlignLeft);
series2->attachAxis(axisX2); //把数据添加到坐标轴上
series2->attachAxis(axisY2);
//accspeed曲线
chart3 = new QChart();
chart3->legend()->setVisible(false);
chartView->setChart(chart3);
QVBoxLayout *accspeedLayout = new QVBoxLayout();
accspeedLayout->addWidget(chartView);
ui->accspeed->setLayout(accspeedLayout);
series3 = new QSplineSeries;
series3->setName("accspeed");
chart3->addSeries(series3);
//坐标
axisX3 = new QDateTimeAxis();
axisX3->setGridLineVisible(true);//网格可见
axisX3->setTickCount(5); //设置坐标轴格数
axisX3->setFormat("hh:mm:ss"); //设置时间显示格式
axisX3->setTitleText("t/s");
axisY3 = new QValueAxis();
axisY3->setTickCount(5);
axisY3->setRange(0,100); //设置Y轴范围
axisY3->setGridLineVisible(true); //设置Y轴网格显示
axisY3->setTitleText("加速度");
axisY3->setLabelFormat("%d"); //图例的格式 %d为十进制显示
chart3->addAxis(axisX3,Qt::AlignBottom); //设置坐标轴位于chart中的位置
chart3->addAxis(axisY3,Qt::AlignLeft);
series3->attachAxis(axisX3); //把数据添加到坐标轴上
series3->attachAxis(axisY3);
}
以上是绘图初始化的部分,把最后的accspeed部分的代码注释掉就只显示speed的绘图,前面两个不显示,
我就很迷这是为啥,求各位指点一二 抱拳了