0

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 だけ?!) などです...

誰が何が起こっているのか理解していますか? 読んでくれてありがとう。

4

1 に答える 1