Qt5 会破坏 QwtPlotRenderer 后记支持吗?
Posted
技术标签:
【中文标题】Qt5 会破坏 QwtPlotRenderer 后记支持吗?【英文标题】:Does Qt5 break QwtPlotRenderer postscript support? 【发布时间】:2015-09-22 11:55:32 【问题描述】:我正在尝试使用QwtPlotRenderer
将QwtPlot
的图像保存为附言文件。这似乎在 documentation 中得到支持,但是每当我使用“.ps”扩展名进行渲染时,什么都不会发生。
经过一番研究,似乎是 Qt5 removed postscript support from QPrinter
。这是否意味着使用 Qt 5 时 Qwt 6.1.2 无法呈现为 postscript?
【问题讨论】:
谢天谢地,PDF 是事实上的页面描述语言,大多数打印机可以直接打印 PDF,而无需先将其转换为 PS。一般来说,这些天几乎不需要发布后记。 我一般同意,但这取决于您的应用程序。如果您尝试在 Adobe Illustrator 中操作文件,则使用 *.eps 文件比使用 *.pdf 文件要容易得多(或者我被付钱给我的人告诉我这样做)。 如果您打算以其他方式操作结果,例如注入您自己的代码(例如 make rgb -> cmy),则 Postscript 可能会更好 【参考方案1】:很遗憾,确实如此。
如果我们查看qwt_plot_renderer.cpp
源代码,我们可以看到 postscript 支持没有扩展到 Qt 版本 5 和更高版本,几乎可以肯定是因为它是基于 QPrinter::PostScriptFormat
构建的,而 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,它们都是矢量图形,其中一种可能适用于大多数应用程序。
【讨论】:
以上是关于Qt5 会破坏 QwtPlotRenderer 后记支持吗?的主要内容,如果未能解决你的问题,请参考以下文章