Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将Qgraphicscene渲染到QImage会导致对象放置在QImage的一侧_C++_Image_Qt - Fatal编程技术网

C++ 将Qgraphicscene渲染到QImage会导致对象放置在QImage的一侧

C++ 将Qgraphicscene渲染到QImage会导致对象放置在QImage的一侧,c++,image,qt,C++,Image,Qt,我的QGraphicscene相当大,QGraphicsView只能容纳其中的一小部分 我想打印/保存Qgraphicscene 当然,在我进行实验时,我会将对象放置在视口的中心 保存的图像包含所有对象,但对象的位置在图像的左侧 输入: 输出: 来自windows照片查看器的屏幕截图 似乎创建了大小正确的图像,但仅渲染视口内容-视口的左上角位于图像的左上角,剩下的图像为空 为什么会这样?我做错了什么 更新: 尝试 fitInView(scene()->sceneRect()); 结果在

我的QGraphicscene相当大,QGraphicsView只能容纳其中的一小部分

我想打印/保存Qgraphicscene

当然,在我进行实验时,我会将对象放置在视口的中心

保存的图像包含所有对象,但对象的位置在图像的左侧

输入:

输出: 来自windows照片查看器的屏幕截图

似乎创建了大小正确的图像,但仅渲染视口内容-视口的左上角位于图像的左上角,剩下的图像为空

为什么会这样?我做错了什么

更新:

尝试

fitInView(scene()->sceneRect());
结果在视口中显示整个图像,缩放。。。但是保存的图像仍然只包含非常小的视口


答案在我的补充解释中

我应该做的

scene()->render(&painter);

我正在渲染视口。。。。不是场景

scene->scene.size返回一个QRectF,toSize函数做什么?根据文档,它不是QRectF的成员:从QSizeF返回QSize。。。。。。。尺寸是正确的,我已经用qDebug测试过了对不起,我弄错了。我现在看到了。如果您先调用QGraphicsView::fitInView,它也会这样做吗?我刚刚尝试过,视口显示缩放的图像,但输出仍然是一样的,因为我忽略了纵横比。我将添加屏幕截图颜色没有区别-但当我编辑我的问题以回答你时,我发现了它,谢谢你的帮助
scene()->render(&painter);