【问题标题】:QGraphicsView to pdfQGraphicsView到pdf
【发布时间】:2013-04-19 00:14:00
【问题描述】:

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 &amp;rect)rect的左上角不是在0,第一页是0,而是107、98,然后是107、1585(但是页面高度只有793?!)等等...

有人明白发生了什么吗?谢谢阅读。

【问题讨论】:

    标签: qt qgraphicsview qgraphicsscene qpainter qprinter


    【解决方案1】:

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

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

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

    例如,您可以尝试:

    render(&myPainter, this->mapToScene(viewRender), viewScene);
    // assuming this is your QGraphicsView instance
    

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

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

    希望对您有所帮助。

    【讨论】:

    • 感谢您的回答。确实,我猜我的坐标有问题,我正朝那个方向走。虽然你的建议暂时没有任何改变......
    • 在同一个变量上使用 mapFromScene 怎么样?还是在您的 viewScene 变量上?
    • 绝对不是mapFromScene,因为这样,drawBackground(QPainter *painter, const QRectF &amp;rect) rect 的左上角位于 107、0.00007 处,宽度为 66000000,高度为 7600000...我要疯了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 2019-12-12
    • 2012-06-19
    相关资源
    最近更新 更多