2012-02-24 9 views
3

封筒に直接アドレスを印刷するアプリケーションを作成しています。私はQTextDocumentを使用していますが、問題はそのメソッドprint()がエンベロープで正しくないページ番号を追加することです。封筒のQTextDocumentのページ番号

いくつかのコードは、場合にあなたがそれを必要とする:

void MainWindow::print() 
{ 
    QString addressText = textEdit->document()->toPlainText(); 
    envelopeDocument = new QTextDocument(this); 
    printer.setResolution(QPrinter::HighResolution); 
    printer.setPrinterName("OKI B6200(PCL6)"); 
    printer.setOrientation(QPrinter::Landscape); 
    QFont font("Trebuchet MS"); 
    switch (envelopeComboBox->currentIndex()){ 
    case 0: 
     font.setPointSize(12); 
     envelopeDocument->setDefaultFont(font); 
     envelopeDocument->setPlainText(addressText); 
     printer.setPaperSize(QSizeF(114,225),QPrinter::Millimeter); 
     printer.setPageMargins(120,60,20,15,QPrinter::Millimeter); 
     break; 
    case 1: 
     font.setPointSize(14); 
     envelopeDocument->setDefaultFont(font); 
     envelopeDocument->setPlainText(addressText); 
     printer.setPaperSize(QSizeF(184,262),QPrinter::Millimeter); 
     printer.setPageMargins(140,100,20,20,QPrinter::Millimeter); 
     break; 
    case 2: 
     font.setPointSize(16); 
     envelopeDocument->setDefaultFont(font); 
     envelopeDocument->setPlainText(addressText); 

     printer.setPaperSize(QSizeF(227,324), QPrinter::Millimeter); 
     printer.setPageMargins(170,120,30,40,QPrinter::Millimeter); 
     break; 
    } 

    QPrintPreviewDialog preview (&printer,this); 
    preview.setWindowFlags(Qt::Window); 
    connect(&preview, SIGNAL(paintRequested(QPrinter *)),SLOT(printPreview(QPrinter *))); 
    preview.exec(); 
} 

void MainWindow::printPreview(QPrinter *p) 
{ 
    envelopeDocument->print(p); 
} 

ありがとうございました!

答えて

7

あなたはそれはあなたがprint()のソースコードを参照する場合、その後、あなたは有効なQTextDocument.pageSize()がない場合QPointF pageNumberPosのみが定義されていることを認識するだろう

QPrinter printer(QPrinter::ScreenResolution); 
printer.setPaperSize(QPrinter::A4); 
printer.setOutputFormat(QPrinter::PdfFormat); 
printer.setOutputFileName(fileName); 
// printer.setPageMargins(0.925, 0.8, 0.5, 0.8, QPrinter::Inch); 

QSizeF paperSize; 
paperSize.setWidth(printer.width()); 
paperSize.setHeight(printer.height()); 
document->setHtml(html); 
document->setPageSize(paperSize); // the document needs a valid PageSize 
document->print(&printer); 

...あなたを助けるかもしれない、次のコードを試すことができます。 pageNumberPosがnullでない場合は、printPage()にページ番号が印刷されます。 有効なQTextDocumtent.pageSize()を設定するだけで、印刷されたドキュメントにはページ番号がありません。

+0

thanx、私はちょうどこれを試して、あなたに戻ってくるでしょう... – shofee

+0

それは私のために働いていた高槻ケン... – shofee

関連する問題