Qt5 会破坏 QwtPlotRenderer postscript 支持吗?
Does Qt5 break QwtPlotRenderer postscript support?
我正在尝试使用 QwtPlotRenderer
将 QwtPlot
的图像保存为 postscript 文件。这似乎在 documentation 中受支持,但是每当我使用“.ps”扩展名进行渲染时,什么也没有发生。
经过一些研究,似乎是 Qt5 removed postscript support from QPrinter
。这是否意味着 Qwt 6.1.2 在使用 Qt 5 时无法呈现为后记?
不幸的是,是的。
如果我们查看 qwt_plot_renderer.cpp
源代码,我们可以看到 postscript 支持没有扩展到 Qt 版本 5 和更高版本,几乎可以肯定是因为它是建立在 QPrinter::PostScriptFormat
之上的,已从 Qt 中删除。
// Excerpt from qwt_plot_renderer.cpp (ln 257)
else if ( fmt == "ps" )
{
#if QT_VERSION < 0x050000
#ifndef QT_NO_PRINTER
QPrinter printer;
printer.setOutputFormat( QPrinter::PostScriptFormat );
printer.setColorMode( QPrinter::Color );
printer.setFullPage( true );
printer.setPaperSize( sizeMM, QPrinter::Millimeter );
printer.setDocName( title );
printer.setOutputFileName( fileName );
printer.setResolution( resolution );
QPainter painter( &printer );
render( plot, &painter, documentRect );
#endif
#endif
}
也就是说,Qwt 确实支持 Qt 5 的多种可移植格式,包括 PDF 和 SVG,它们都是矢量图形,其中一种可能适用于大多数应用程序。
我正在尝试使用 QwtPlotRenderer
将 QwtPlot
的图像保存为 postscript 文件。这似乎在 documentation 中受支持,但是每当我使用“.ps”扩展名进行渲染时,什么也没有发生。
经过一些研究,似乎是 Qt5 removed postscript support from QPrinter
。这是否意味着 Qwt 6.1.2 在使用 Qt 5 时无法呈现为后记?
不幸的是,是的。
如果我们查看 qwt_plot_renderer.cpp
源代码,我们可以看到 postscript 支持没有扩展到 Qt 版本 5 和更高版本,几乎可以肯定是因为它是建立在 QPrinter::PostScriptFormat
之上的,已从 Qt 中删除。
// Excerpt from qwt_plot_renderer.cpp (ln 257)
else if ( fmt == "ps" )
{
#if QT_VERSION < 0x050000
#ifndef QT_NO_PRINTER
QPrinter printer;
printer.setOutputFormat( QPrinter::PostScriptFormat );
printer.setColorMode( QPrinter::Color );
printer.setFullPage( true );
printer.setPaperSize( sizeMM, QPrinter::Millimeter );
printer.setDocName( title );
printer.setOutputFileName( fileName );
printer.setResolution( resolution );
QPainter painter( &printer );
render( plot, &painter, documentRect );
#endif
#endif
}
也就是说,Qwt 确实支持 Qt 5 的多种可移植格式,包括 PDF 和 SVG,它们都是矢量图形,其中一种可能适用于大多数应用程序。