QGraphicsView/QGraphicsScene
ナビゲーション用のスクロール バーを使用して、大きなシーンをウィンドウに正常に表示できました。すべて正常に動作します。
ここで、シーンの一部を pdf でレンダリングしたいと思います。PDF でレンダリングされる領域は、ウィンドウに表示される領域と、表示領域の上下の長方形である必要があります。
私はそれを試しました(簡単に言うと、水平スクロールバーが使用されている場合は無視しました):
QPrinter myPrinter(QPrinter::ScreenResolution);
myPrinter.setOrientation(QPrinter::Landscape);
myPrinter.setPaperSize(QPrinter::A4);
myPrinter.setOutputFormat(QPrinter::PdfFormat);
myPrinter.setPageMargins(0.0, 0.0, 0.0, 0.0, QPrinter::Point);
QPainter myPainter(&myPrinter);
m_pageWidth = myPrinter.width();
m_pageHeight = myPrinter.height();
myPainter.setViewport(0, 0, m_pageWidth, m_pageHeight);
QRectF viewRender = QRect(0.0, 0.0, m_pageWidth, m_pageHeight);
for(int i = 0; i < myScene->getNbPages(); i++)
{
QRect viewScene = QRect(0, m_pageHeight * i, m_pageWidth, m_pageHeight);
setSceneRect(viewScene);
render(&myPainter, viewRender, viewScene);
if(i + 1 < myScene->getNbPages())
myPrinter.newPage();
}
しかし、思うように結果が出ません。たとえば、この関数QGraphicsView::drawBackground(QPainter *painter, const QRectF &rect)
の rect の左上隅は、最初のページでは 0, 0 ではなく、107, 98、次に 107, 1585 (ただし、ページの高さは 793 だけ?!) などです...
誰が何が起こっているのか理解していますか? 読んでくれてありがとう。