2011-05-26 12 views
1

は、私が印刷ボタンを押すことで次のコードQPrintPreviewDialog間違ったプレビュー

QPrinter printer; 
    printer.setResolution(QPrinter::HighResolution); 
    printer.setPaperSize(QPrinter::A4); 
    printer.setOrientation(QPrinter::Portrait); 
    QPrintPreviewDialog *pd = new QPrintPreviewDialog(&printer); 
    connect(pd,SIGNAL(paintRequested(QPrinter*)),this,SLOT(print(QPrinter*))); 
    pd->exec(); 


void Class::print(QPrinter *p) 
{ 
    QTextEdit *ted = new QTextEdit; 
    ted->insertHtml("<center><img src='"+QString(":/img/logo.png")+"' width='90' height='72'/><b><font size='9'>Logo Text</font></b></center>"); 
    ted->document()->print(p); 
} 

を使用して、このダイアログが表示されます:

enter image description here

あなたが見ることができるようにコンテンツはページ全体に広がっています。 それから私は、プレビューダイアログの[ページ設定]ボタンをクリックして、これが表示されます:

enter image description here

を何も変更せずに、私は[OK]をクリックして、プレビューが正しい次のようになります。

enter image description here

質問は、コードでプレビューを修正する方法ですか?

答えて

0

プレビューする前に表示するにはQPageSetupDialogを追加してください。

1

QTextEditの代わりにQTextDocumentを使用します。後者は、出力をサイズ変更に依存するウィジェットです。

+0

同じものを..... – yolo

0

私は同じ問題がありました。どうやら、ページ設定ダイアログのOKボタンを押すと、解像度が変わります。これを修正するために、印刷プレビューを計算する方法で解像度を戻します。

dialog = QPrintPreviewDialog() 
dialog.paintRequested.connect(self.print) 
dialog.exec_() 

def print(self, printer): 
    printer.setResolution(300) 
    painter = QPainter() 
    painter.begin(printer) 
    ...