QT savePNG保存内容不全

在QT中使用使用QCustomPlot库的savePng时,只能够保存当前窗口显示的波形,而我窗口外的波形就丢失了,改width参数也只是调整了图片的分辨率,怎么才能保存导出示波器完整的波形呢,网上找了很久没找到相关资料。

img

一个简单的方法,只是我之前脑子没转过来,只要在保存时将视窗内显示所有的波形,进行保存后再将视窗显示的内容调整回来就行了,注意图片宽度,我用的时间轴作为X轴,所以开始直接将运行时间当做图片宽度,图片只有几十宽分辨率,需要等比放大,代码如下:

motionView[i]->xAxis->setRange (0, nowTime);
motionView[i]->replot();
motionView[i]->savePng(QDateTime::currentDateTime().toString("yyyy-MM-d-HH-mm-ss-") + QString("Motion_%1.png").arg(i), (int)(nowTime * 100), motionView[i]->height());
if(nowTime > MAX_X)
{
    motionView[i]->xAxis->setRange (nowTime - MAX_X, nowTime);
    motionView[i]->replot();
}else
{
    motionView[i]->xAxis->setRange (MIN_X, MAX_X);
    motionView[i]->replot();
}

要保存导出完整的波形,需要使用QCustomPlot库提供的savePdf或者saveBmp函数,而不是savePng函数。savePdf和saveBmp函数可以保存窗口内外的完整波形,更高分辨率的图片效果也会更佳。