如何在QT中将图表另存为图像

时间:2011-08-19 20:30:31

标签: c++ qt

我在QT中创建了一个图表。有没有办法可以将其保存为图像?

谢谢,

1 个答案:

答案 0 :(得分:5)

当你说图表时,我认为它是某种矢量图形或类似的。我通常使用QPrinter将它们导出为PDF,然后在我的文档中使用它们(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创建绘图,但任何支持渲染到QPainter的QWidget或对象都可以。有关详细信息,请参阅QWidget::render()。上面的代码实际上允许您甚至打印到真正的打印机。但我通常只在打印机对话框中设置“打印到PDF”。如果您不需要打印机对话框,可以跳过它并使用QPrinter::setOutputFilename直接设置PDF文件名。