我在QT的QPrintPreviewDialog窗口中看不到任何内容,为什么会这样?缺少什么?
QPrinter printer;
printer.setOutputFileName("sample.pdf");
printer.setPaperSize(QPrinter::A4);
printer.setFullPage(true);
QPainter painter(&printer);
painter.drawLine(10, 10, 200, 200);
QPrintPreviewDialog * preview = new QPrintPreviewDialog(&printer, this);
if (preview->exec() == QDialog::Accepted)
{
}
答案 0 :(得分:0)
这不是documented使用QPrintPreviewDialog
的方式,文档明确指出在使用QPrinterPreviewDialog
对象构建QPrinter
之后和调用{{1}之前},您应该将QPrintPreviewDialog::exec()
信号连接到自定义插槽(您应该在关联的paintRequested()
对象上绘制,并且您在那里绘制的所有内容都会显示在QPrinter
)。
所以,如果我理解你要做的正确,你应该定义一个插槽QPrintPreviewDialog
并在那里使用PreviewPaintRequest
,你的代码应该是这样的:
在你的构造函数中:
QPainter
<{1>}插槽中的:
QPrinter printer;
printer.setOutputFileName("sample.pdf");
printer.setPaperSize(QPrinter::A4);
printer.setFullPage(true);
QPrintPreviewDialog * preview = new QPrintPreviewDialog(&printer, this);
connect(preview, SIGNAL(paintRequested(QPrinter*)), this, SLOT(PreviewPaintRequested(QPrinter*)));
if (preview->exec() == QDialog::Accepted)
{
}