我的QGraphicsScene
相当大,而QGraphicsView
只适合其中的一小部分。
我想打印/保存QGraphicsScene
OutputView::OutputView(QWidget *parent)
: QGraphicsView(parent) {...}
void OutputView::saveToImage()
{
QImage image(scene()->sceneRect().size().toSize(), QImage::Format_Mono);
image.fill(Qt::transparent);
QPainter painter(&image);
render(&painter);
image.save("output.png");
}
当然,在我进行实验时,我将对象放在视口的中心......
保存的图像包含所有对象,但对象的位置位于图像的左侧
输入:
输出:
(来自windows photo viewer的截图)
似乎创建的图像具有正确的大小,但之后只渲染视口内容 - 视口左上角位于图像的左上角,图像的其余部分为空。
为什么会这样?我做错了什么?
更新
尝试
fitInView(scene()->sceneRect());
导致视口显示整个图像,缩放...但保存的图像仍包含视口(仅非常小)
答案 0 :(得分:0)
答案在我的补充说明中。
我应该做的
scene()->render(&painter);
我正在渲染视口....而不是场景