QPrintDialog を使用して、次のように QPrinter オブジェクトを初期化します。
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 プログラミングの経験はありません。