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?!)等等......
任何人都明白发生了什么?谢谢阅读。