打印不适用于QPrinter和QPainter

时间:2013-09-09 11:18:16

标签: qt

我想通过打印机打印一些消息,但编译时没有任何反应。 我的代码有什么问题?

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());

2 个答案:

答案 0 :(得分:0)

如上所述,代码不会做任何事情,因为你从不破坏画家也不会完成页面。你需要毁掉画家:delete painter;。或者,如果您打印多个页面,则每次完成页面时都需要致电printer.newPage()

drawText很可能会在页面的不可打印区域中绘制。尝试:

painter->drawText(printer.pageRect(), ui->textEdit->toPlainText());

答案 1 :(得分:0)

问题在于:PrintConfiguration->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());
}