2013-10-18 66 views
1

我用QPrintDialog中初始化QPrinter做对象是这样的:检测PDF打印在Mac

QPrinter printer; 
QPrintDialog dlg(&printer); 
if (dlg.exec() == QDialog::Accepted) 
{ 
    /* Are we printing to PDF? */ 
} 

在Windows上,它很容易,如果输出将一个文件或PDF作家检测。在Mac上,没有同样功能的工作:

if ((printer.outputFormat() == QPrinter::PdfFormat) 
|| (!printer.outputFileName().isEmpty())) 
{ 
    qDebug("PDF mode"); 
} 

在qprintdialog_mac.mm的拷贝在网上看,在功能QPrintDialogPrivate :: closeCarbonPrintPanel(),Qt的尝试检测,如果输出重定向到一个文件。它将文件名存储在QMacPrintEnginePrivate的成员中。不知何故,该名称永远不会通向QPrinter对象。我不确定断开连接的位置。

所以.....我怎么知道打印输出是否真的要去一个文件?如果容易,我愿意在这里获得具体的平台。尽管我没有Mac编程经验。

+2

你为什么要这么做?它应该是透明的。用户应该可以随意打印他/她想要的任何内容。 –

+0

我们可能会根据输出设备呈现不同的效果。 IE,pdf可以放大更多细节。这已被报告为QTBUG-2091。 – mjk99

回答

0

这是Qt中的一个错误。

在Qt 5.3中,提供的示例代码将工作,因为第二个条件是QPrinter::outputFileName()的调用。