2010-09-30 8 views
1

dans QT, si j'utilise le widget Aperçu de la boîte de dialogue d'aperçu, alors il s'agit d'une nouvelle fenêtre. En fait, j'ai besoin de montrer l'aperçu avant impression à l'utilisateur, j'ai besoin d'intégrer dans la fenêtre principale de mon application. Y'a-t'il un quelconque moyen d'y arriver?. J'ai essayé printPreviewWidget mais, je n'ai pas obtenu le résultat?Comment incorporer la boîte de dialogue Aperçu avant impression dans QT

s'il vous plaît aidez-moi à résoudre le problème

Répondre

6

enfin je ne ai trouvé la réponse à ma question forme. J'espère que cela aidera les autres.

J'ai utilisé QPrintPreviewWidget. S'il vous plaît voir le code ....

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(); 
    } 
} 
+2

accepter la réponse, peu importe qui l'a trouvé. – Dasun

Questions connexes