我想通过打印机打印一些消息,但编译时没有任何反应。 我的代码有什么问题?
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());
答案 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());
}