В предыдущей статье по работе с QCustomPlot был дан пример использования данной библиотеки. Но после того, как график построен, может возникнуть необходимость произвести его сохранение в графический файл. Библиотека QCustomPlot уже предоставляет необходимые для этого методы. Всё, что нужно сделать - это создать файл, в который будет произведено сохранение и передать путь к файлу в один из методов для сохранения изображения.
Методы для сохранения изображения
saveRastered(const QString &fileName, int width, int height, double scale, const char *format, int quality) saveJpg(const QString &fileName, int width, int height, double scale, int quality); savePng(const QString &fileName, int width, int height, double scale, int quality); saveBmp(const QString &fileName, int width, int height, double scale); savePdf(const QString &fileName, bool noCosmeticPen, int width, int height, const QString &pdfCreator, const QString &pdfTitle);
saveRastered
Является основополагающим методом для методов: saveJpg, savePng, saveBmp. То есть он вызывается во всех этих методах. Внутри метода saveRastered создаётся экземпляр QPixmap, посредством которого сохраняется изображение из виджета QCustomPlot. Для данного метода можно указать тип сохраняемого файла. Тогда как остальные три метода просто упрощают работу и написание кода, отменяя необходимость указания типа файла.
savePdf
Данный метод стоит особняком и не использует QPixmap , а работает через QPrinter . Хотя логика использования в минимальном варианте аналогична остальным методам.
Сохранение изображения
Расширим программный код из предыдущего урока добавлением кнопки Save , в слоте которой будет происходить сохранение изображения в файл по следующему пути C:/example/customPlot.png.
Помимо пути к файлу имеется возможность указать качество изображения, его масштаб, и параметры сторон.
// Слот кнопки Save, для сохранения изображения в файл void MainWindow::on_pushButton_clicked() { QString fileName("C:/example/customPlot.png"); QFile file(fileName); if (!file.open(QIODevice::WriteOnly)) { qDebug() << file.errorString(); } else { wGraphic->savePng(fileName); } }