在Qt中打印预览

Print Preview in Qt

本文关键字:打印 Qt      更新时间:2023-10-16

我想预览页面或进行打印预览。一个预览窗口正在打开,但qt窗口的内容不在其中。我打印预览的代码如下:

void User::on_actionprintPreview_triggered()
{
    QPrinter printer(QPrinter::HighResolution);
    QPrintPreviewDialog preview(&printer, this);
    connect(&preview, SIGNAL(paintRequested(QPrinter *)),
            this, SLOT(print(QPrinter *)));
    preview.exec();
}
void User::print(QPrinter *printer)
{
    // print the page
    QPainter painter(printer);
    int w = printer->pageRect().width();
    int h = printer->pageRect().height();
    QRect page(0, 0, w, h);
    QFont font = painter.font();
    font.setPixelSize((w+h)/100);
    painter.setFont(font);
    painter.drawText(page, Qt::AlignBottom | Qt::AlignRight,
                     QDateTime::currentDateTime().
                     toString(Qt::DefaultLocaleShortDate));
    page.adjust(w/20, h/20, -w/20, -h/20);
}

我如何才能在其中获取qt窗口的内容。我做错了什么吗。请帮我解决这个问题。

如果您想打印对话框或小部件的内容,您的print插槽应该是:

void User::print(QPrinter * printer)
{
    QPainter painter(printer);
    painter.setWindow(this->rect());
    this->render(&painter);
}