簡體   English   中英

打印不適用於QPrinter和QPainter

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM