#include <QApplication>
#include<QGraphicsScene>
#include<QGraphicsView>
#include<QPrinter>
#include<QPrintDialog>
#include<QPainter>
#include<QDebug>
int main(int argc, char *argv[])
{
qDebug()<<"printer->pageRect().width() "<<printer->pageRect().width();
qDebug()<<"printer->paperRect().width() "<<printer->paperRect().width();
qDebug()<<"printer->pageRect().height() "<<printer->pageRect().height();
qDebug()<<"printer->paperRect().height() "<<printer->paperRect().height();
qDebug()<<"scene->width() "<<scene->width();
qDebug()<<"scene->height() "<<scene->height();
/*painter.setRenderHint(QPainter::Antialiasing);
view =QRect(0,0,printer->pageRect().width(),printer->paperRect().height()));
painter.setViewport(view);
painter.scale(8.0,8.0);
// scene->render(&painter,QRectF(0,0,scene->width(),printer->paperRect().height()),QRectF(0,0,scene->width(),printer->paperRect().height()));
//scene->render(&painter,QRectF(0,0,printer->pageRect().width(),printer->paperRect().height()),QRectF(0,0,printer->pageRect().width(),printer->paperRect().height()));
scene->render(&painter,QRectF(view),QRectF(view));
printer->newPage();*/
QRect view
=QRect(0,
0,printer
->pageRect
().
width(),printer
->pageRect
().
height());
QRect targetView
=QRect(0,
0,printer
->pageRect
().
width(),printer
->pageRect
().
height());
int paperNums=scene->height()/printer->paperRect().height()+1;
qDebug()<<"paperNums :: "<<paperNums ;
painter.
setRenderHint(QPainter::Antialiasing);
painter.scale(6.0,7.0);
qreal x1,x2,y1,y2;
x2=scene->width();
y2=printer->pageRect().height();
int paperCount=1;
do{
painter.setViewport(view);
qDebug()<<"scene->sceneRect() :: "<<scene->sceneRect();
gview.setSceneRect(0,y1,x2,y2);
qDebug()<<" gview :: scenerects >>>>>> "<<gview.sceneRect() <<" at paper >>>>>> "<<paperCount;
gview.
render(&painter,
QRectF(view
),targetView
);
paperCount++;
y1=y1+printer->pageRect().height();
y2=y2+printer->pageRect().height();
printer->newPage();
}while(paperCount<paperNums);
}
app.setStyle("windows");
return app.exec();
}
#include <QApplication>
#include<QGraphicsScene>
#include<QGraphicsView>
#include<QPrinter>
#include<QPrintDialog>
#include<QPainter>
#include<QDebug>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPrinter *printer=new QPrinter(QPrinter::HighResolution);
printer->setPageSize(QPrinter::A4);
QWidget *widget=new QWidget;
QGraphicsScene *scene=new QGraphicsScene(QRectF(0,0,1250,819200),widget);
qDebug()<<"printer->pageRect().width() "<<printer->pageRect().width();
qDebug()<<"printer->paperRect().width() "<<printer->paperRect().width();
qDebug()<<"printer->pageRect().height() "<<printer->pageRect().height();
qDebug()<<"printer->paperRect().height() "<<printer->paperRect().height();
qDebug()<<"scene->width() "<<scene->width();
qDebug()<<"scene->height() "<<scene->height();
if (QPrintDialog(printer).exec() == QDialog::Accepted) {
QPainter painter(printer);
/*painter.setRenderHint(QPainter::Antialiasing);
view =QRect(0,0,printer->pageRect().width(),printer->paperRect().height()));
painter.setViewport(view);
painter.scale(8.0,8.0);
// scene->render(&painter,QRectF(0,0,scene->width(),printer->paperRect().height()),QRectF(0,0,scene->width(),printer->paperRect().height()));
//scene->render(&painter,QRectF(0,0,printer->pageRect().width(),printer->paperRect().height()),QRectF(0,0,printer->pageRect().width(),printer->paperRect().height()));
scene->render(&painter,QRectF(view),QRectF(view));
printer->newPage();*/
QRect view =QRect(0,0,printer->pageRect().width(),printer->pageRect().height());
QRect targetView =QRect(0,0,printer->pageRect().width(),printer->pageRect().height());
int paperNums=scene->height()/printer->paperRect().height()+1;
qDebug()<<"paperNums :: "<<paperNums ;
painter.setRenderHint(QPainter::Antialiasing);
QGraphicsView gview(scene);
painter.scale(6.0,7.0);
qreal x1,x2,y1,y2;
x2=scene->width();
y2=printer->pageRect().height();
int paperCount=1;
do{
painter.setViewport(view);
qDebug()<<"scene->sceneRect() :: "<<scene->sceneRect();
gview.setSceneRect(0,y1,x2,y2);
qDebug()<<" gview :: scenerects >>>>>> "<<gview.sceneRect() <<" at paper >>>>>> "<<paperCount;
gview.render(&painter,QRectF(view),targetView);
paperCount++;
y1=y1+printer->pageRect().height();
y2=y2+printer->pageRect().height();
printer->newPage();
}while(paperCount<paperNums);
}
app.setStyle("windows");
return app.exec();
}
To copy to clipboard, switch view to plain text mode
Bookmarks