2

私の小さなアプリケーションでは、各ページでいくつかの HTML コンテンツをプレビューしたいので、次のコードを使用しました

/*
* Handle events when clicking button to preview content
*/
void MainWindow::on_pushButton_clicked()
{
    QPrinter printer;
    printer.setPaperSize(QPrinter::A4);
    printer.setOrientation(QPrinter::Portrait);
    printer.setFullPage(true);

    QPrintPreviewDialog *printPreview = new QPrintPreviewDialog(&printer);
    connect(printPreview, SIGNAL(paintRequested(QPrinter*)), this, SLOT(printAllTitle(QPrinter*)));

    printPreview->setWindowTitle("Demo");
    Qt::WindowFlags flags(Qt::WindowTitleHint);
    printPreview->setWindowFlags(flags);
    printPreview->showMaximized();
    printPreview->exec();
}

/*
* Show preview content
*/
void MainWindow::printAllTitle(QPrinter *printer)
{
    QVector<QString> titles;
    titles.push_back("Title 1");
    titles.push_back("Title 2");

    QString strStream;
    QTextStream out(&strStream);

    for (int i = 0; i < titles.size(); i++) {
        out << "<html><head></head><body>";
        out << "<p style=\"font-size:20pt\">" + titles.at(i) + "</p>";
        out << "</body></html>";

        printer->newPage();   // Don't move the next page !!!
    }

    QTextDocument *document = new QTextDocument();
    document->setHtml(strStream);
    document->print(printer);
    delete document;
} 

そして、私が得た結果ページ

次のページに移動できません

結果ページを何度もテストした後、プリンターが次のページに移動して HTML コンテンツを印刷しないことに気付きました。

この問題を解決するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

6

これを追加してページを壊すことができると思います。

<div style=\"page-break-after:always\"></div>
于 2013-11-15T07:18:00.277 に答える