[英]Printing not working with QPrinter and a QPainter
我想通過打印機打印一些消息,但是編譯時沒有任何反應。 我的代碼有什么問題?
QPrinter printer(QPrinter::HighResolution);
printer.setCreator("Me");
printer.setDocName("Test1");
QPrintDialog *PrintConfiguration = new QPrintDialog(&printer,this);
PrintConfiguration->show();
QPainter *painter = new QPainter(&printer);
painter.drawText(10,10,ui->textEdit->toPlainText());
如前所述,該代碼不會執行任何操作,因為您永遠不會破壞畫家或完成頁面。 您需要破壞畫家: delete painter;
。 另外,如果要打印多頁,則每次處理printer.newPage()
一頁后都需要調用printer.newPage()
。
drawText
很可能會在頁面的不可打印區域中繪制。 嘗試:
painter->drawText(printer.pageRect(), ui->textEdit->toPlainText());
問題在這里: PrintConfiguration->show();
show()
准備show()
小部件並立即返回。 因此,結果是您試圖在用戶設法與UI進行任何交互之前繪畫,並且您的打印機對象設置不正確。 您需要一個阻塞方法: exec()
。 正確的代碼應如下所示:
QPrinter printer(QPrinter::HighResolution);
printer.setCreator("Me");
printer.setDocName("Test1");
QPrintDialog printDialog(printer, this);
if (printDialog.exec() == QDialog::Accepted) {
QPainter painter(&printer);
painter.drawText(10,10,ui->textEdit->toPlainText());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.