我需要生成一个文档来打印用户动态创建的多个对象,并且我想打印这些文档。我编写了以下代码(generateDocument()接受对文档的引用以添加html代码):
QPrinter printer;
QPrintDialog popup(&printer);
if (popup.exec() == QDialog::Accepted)
{
for (int i = 0; i < _quiz->getSerieCount(); i++)
{
QTextDocument doc;
generateDocument(doc, _quiz->getSerie(i));
doc.print(&printer);
}
}
当打印到pdf时,linux和windows中的行为是不同的:在linux上,这只打印最后生成的文档,在Windows上,它会提示为每个generateDocument()调用选择一个新的pdf。
我应该以不同的方式做到这一点吗?
答案 0 :(得分:1)
您可以为每个系列添加分页符,然后打印文档 尝试以下例如
QTextDocument doc;
QTextCursor cursor(&doc);
for (int i = 0; i < _quiz->getSerieCount(); i++)
{
if(i!=0) \\ dont add page break for the first document
{
QTextBlockFormat blockFormat;
blockFormat.setPageBreakPolicy(QTextFormat::PageBreak_AlwaysAfter);
cursor.insertBlock(blockFormat);
}
// < append _quiz->getSerie(i) contents in the document >
}
doc.print(&printer);
Haven没有对代码进行测试,但是我应该在没有任何问题的情况下在Windows上工作,因为我使用它同样没有任何问题。无法对Linux机器上的行为做任何评论。您可以更好地修改它以满足您的需要 希望这有助于。