【发布时间】:2020-06-23 08:12:15
【问题描述】:
我对 C++ 和 QT 非常陌生。我想用打印机打印一个 mainwindow.ui 表单。为此,我有这样的代码:
void MainWindow::on_Button_printer_clicked()
{
ui->Button_printer->setVisible(0);
QPrinter printer(QPrinter::ScreenResolution);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName("TestReport.pdf");
printer.setPageMargins(12, 16, 12, 20, QPrinter::Millimeter);
printer.setFullPage(false);
QPainter painter(&printer);
// double xscale = ;
// double yscale = ;
// double scale = qMin(xscale, yscale);
painter.translate(printer.paperRect().center());
// painter.scale(scale, scale);
// painter.translate(-w.width()/ 2, -w.height()/ 2);
//ui->centralwidget->render(&painter);
this->render(&painter);
}
但是,我不知道如何呈现当前的主窗口表单。我是通过表单创建的。所以我认为这个。渲染应该可以工作,但它没有。我也试过了:
ui->centralwidget->render(&painter);
那也没用。我怎样才能呈现 MainWindow 表单并将“this”替换为:
this->render(&painter);
【问题讨论】:
-
它回答了你的问题stackoverflow.com/questions/45467942/… 吗?
-
其实没有。我已经检查过了。在该示例中,人使用 w.render(&painter)。但是我的小部件的名称不是 w... 而且我不知道要写什么而不是 w。在我的示例中,它是“this”。
-
请检查 main() 函数。你应该有类似 MainWindow 窗口的东西;窗口显示();。这应该可以解决您的任何疑问
-
在 main.cpp 我有这个: MainWindow w; w.show();在这种情况下,我应该使用 w.render(&painter); ?
-
这能回答你的问题吗? How can I print a QWidget in Qt?