首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QGraphicsView到pdf

QGraphicsView到pdf
EN

Stack Overflow用户
提问于 2013-04-19 08:14:01
回答 1查看 1.8K关注 0票数 0

我在QGraphicsView/QGraphicsScene的帮助下成功地在我的窗口中显示了一个很大的场景,并带有用于导航的滚动条。一切都很好。

现在我想以pdf格式渲染场景的一部分。要在pdf中呈现的区域应该是窗口中可见的区域以及可见区域上方和下方的矩形。

我已经尝试过了(为了简单起见,如果使用了水平滚动条,我会忽略它):

代码语言:javascript
复制
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)矩形的左上角不是0,0,而是107,98,然后是107,1585 (但页面高度只有793 ?!)以此类推。

有人知道这是怎么回事吗?感谢您的阅读。

EN

回答 1

Stack Overflow用户

发布于 2013-04-19 08:29:58

http://qt-project.org/doc/qt-4.8/qgraphicsview.html#mapToScene

http://qt-project.org/doc/qt-4.8/qgraphicsview.html#mapFromScene

适当地使用其中的一种或另一种,您应该会得到想要的结果。

例如,您可以尝试:

代码语言:javascript
复制
render(&myPainter, this->mapToScene(viewRender), viewScene);
// assuming this is your QGraphicsView instance

我在我回答的另一个问题中演示了如何使用它:

How to draw a point (on mouseclick) on a QGraphicsScene?

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16095169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档