2013-11-15 3 views
2

와 HTML 콘텐츠를 인쇄 할 다음 페이지로 이동할 수 없습니다, 나는 각 페이지에 일부 HTML 콘텐츠를 미리 볼 그래서 나는 다음과 같은 코드내 작은 응용 프로그램에서 QPrinter

/* 
* 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; 
} 

내가

을받은 결과 페이지를 사용

Cannot move the next page

결과 페이지를 여러 번 테스트 한 후 프린터가 다음 페이지를 이동하여 HTML 콘텐츠를 인쇄하지 않는다는 것을 깨달았습니다.

이 문제를 어떻게 해결할 수 있습니까?

감사합니다.

+0

'for' 루프의 미리보기 창에 아무 것도 인쇄하지 않습니다. – RobbieE

답변

5

페이지를 나누기 위해 추가 할 수 있다고 생각합니다.

<div style=\"page-break-after:always\"></div> 
+0

제안에 따라 코드를 수정했습니다. 잘 작동합니다! 잘 했어, 친구! –