Hi,
I'm trying to print a QGraphicsScene and I'm having some problems with the resulting size.
int iDPIs = 300;
qreal qResolutionMmPx = 1 / ((double)iDPIs / 25.4); //mm / px
QString qPDFFileName
= "painter.pdf";
qPrinter.
setOutputFormat(QPrinter::PdfFormat);
qPrinter.setOutputFileName(qPDFFileName);
qPrinter.setResolution(iDPIs);
qPainter.drawRect(50/qResolutionMmPx,50/qResolutionMmPx,100/qResolutionMmPx,100/qResolutionMmPx);
int iDPIs = 300;
qreal qResolutionMmPx = 1 / ((double)iDPIs / 25.4); //mm / px
QPrinter qPrinter;
QString qPDFFileName = "painter.pdf";
qPrinter.setOutputFormat(QPrinter::PdfFormat);
qPrinter.setOutputFileName(qPDFFileName);
qPrinter.setPageSize(QPrinter::A4);
qPrinter.setResolution(iDPIs);
QPainter qPainter(&qPrinter);
qPainter.drawRect(50/qResolutionMmPx,50/qResolutionMmPx,100/qResolutionMmPx,100/qResolutionMmPx);
To copy to clipboard, switch view to plain text mode
This draws a 100x100mm rect perfectly.
This code tryies to print using a graphics scene:
int iDPIs = 300;
qreal qResolutionMmPx = 1 / ((double)iDPIs / 25.4); //mm / px
ui.graphicsView->setScene(pqScene);
pqScene
->addRect
(0,
0,
100/qResolutionMmPx,
100/qResolutionMmPx,
QPen(Qt
::blue));
//100x100mm desired rect
QString qPDFFileName
= "scene.pdf";
qPrinter.
setOutputFormat(QPrinter::PdfFormat);
qPrinter.setOutputFileName(qPDFFileName);
qPrinter.setResolution(iDPIs);
pqScene->render(&qPainter);
int iDPIs = 300;
qreal qResolutionMmPx = 1 / ((double)iDPIs / 25.4); //mm / px
pqScene = new QGraphicsScene(this);
ui.graphicsView->setScene(pqScene);
pqScene->addRect(0,0,100/qResolutionMmPx,100/qResolutionMmPx,QPen(Qt::blue)); //100x100mm desired rect
QPrinter qPrinter;
QString qPDFFileName = "scene.pdf";
qPrinter.setOutputFormat(QPrinter::PdfFormat);
qPrinter.setOutputFileName(qPDFFileName);
qPrinter.setPageSize(QPrinter::A4);
qPrinter.setResolution(iDPIs);
QPainter qPainter(&qPrinter);
pqScene->render(&qPainter);
To copy to clipboard, switch view to plain text mode
This always gives me a rect about 203mm. Also changing the size of the rect item gives me always the same result size.
What I found is that changing the scene rect also changes the resulting size, so
pqScene->setSceneRect(0,0,1000,1000);
pqScene->setSceneRect(0,0,1000,1000);
To copy to clipboard, switch view to plain text mode
Gives me a rect that is 76,6mm
Can anyone explain me what I'm not understanding?
Thanks,
Bookmarks