Как встроить диалог предварительного просмотра в QT - PullRequest
1 голос
/ 30 сентября 2010

в QT, если я использую виджет диалогового окна предварительного просмотра, то это всплывающее окно как новое окно.на самом деле мне нужно показать предварительный просмотр для пользователя, мне нужно встроить в главное окно моего приложения.Есть ли способ сделать это?я пробовал printPreviewWidget, но я не получил результат?

, пожалуйста, помогите мне решить проблему

1 Ответ

6 голосов
/ 05 октября 2010

наконец-то я нашел ответ только на свой вопрос. Я надеюсь, что это поможет другим.

Я использовал QPrintPreviewWidget. пожалуйста, смотрите код ....

Widget::Widget(QWidget *parent, QWidget *report) :
        QWidget(parent),
        ui(new Ui::Widget)
{
    ui->setupUi(this);
    printer = new QPrinter(QPrinter::PrinterResolution);
    printer->setOutputFormat(QPrinter::PdfFormat);
    printer->setOutputFileName("sample.pdf");
    printer->setPaperSize(QPrinter::A4);
    printer->setFullPage(true);
    printer->setResolution(300);

    preview = new QPrintPreviewWidget(printer, this);
    ui->verticalLayout->addWidget(preview);
    preview->setFont(QFont("Arial",18,QFont::Bold));
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(print()));
    connect(preview, SIGNAL(paintRequested(QPrinter*)), report, SLOT(Print(QPrinter*)));

    preview->setZoomFactor(1);
    preview->show();
}

void Widget::print()
{
        preview->print();
}


void Report::Print(QPrinter *printer)
{
    QPainter p(printer);
    p.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform, true);


    for (int page = 0; page < 5; page++)
    {
        p.drawText(1750, 200, QString("Date: %1").arg(QDateTime::currentDateTime().toString("dd.MM.yyyy")));


     p->fillRect(QRect(150,150,2179,125),QBrush(QColor(222,222,230,255)));
        printer->newPage();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...