Когда вы говорите диаграмму, я предполагаю, что это какая-то векторная графика или что-то подобное. Я обычно экспортирую их в PDF, используя QPrinter, а затем использую их в своих документах (LaTeX, Keynote, ...).
Вот фрагмент кода, который может помочь. Не проверено, так как я перенес его в своей голове из Python обратно на C ++:
QPrinter *printer = new QPrinter();
printer->setOrientation(QPrinter::Landscape);
QPrintDialog *dialog = new QPrintDialog(printer);
dialog->setWindowTitle("Print Plots");
if (dialog.exec() != QDialog::Accepted)
return;
QPainter *painter = new QPainter();
painter->begin(printer);
ui->someQwtPlot->print(painter, printer->pageRect());
painter->end();
delete(dialog);
delete(painter);
delete(printer);
Я предполагаю, что здесь вы создаете график с QwtPlot, но подойдет любой QWidget или объект, поддерживающий рендеринг в QPainter. Подробности смотрите QWidget :: render () . Код выше на самом деле позволяет даже печатать на реальном принтере. Но я обычно просто устанавливаю «Печать в PDF» в диалоговом окне принтера. Если вам не нужно диалоговое окно принтера, вы можете пропустить его и использовать QPrinter :: setOutputFilename для прямой установки имени файла PDF.