如何调整 QGraphicsView 场景内图像的大小

问题描述 投票:0回答:2

我想用 QGraphicsScene 在 QGraphicsView 中显示图像。我的代码非常基本:

QGraphicsScene* scene = new QGraphicsScene(this);
scene->addPixmap(QPixmap(qApp->applicationDirPath() +"/france.gif"));
ui->myGraphicsView->setScene(scene);
ui->myGraphicsView->fitInView(scene->sceneRect());

我的问题是我的图片尺寸错误。它很小,比例不对,而且在

myGraphicsView
的中心。

随着

qDebug
,我知道我的图片已成功加载,并且它的大小约为100x800px。
my GraphicsView
较小,所以我想调整图片大小以调整
myGraphicsView
大小。

图形视图以

mainwindow
形式设置,场景在标题中声明:
QGraphicsScene scene;

我尝试了很多方法,但图形视图始终是空白的,或者包含图片的小版本。

我也尝试过这个例子:Qt GUI Development - Displaying a 2D grid using QGraphicsView,但同样的问题。

image qt size qgraphicsview qgraphicsscene
2个回答
1
投票

sceneRect()
可能不是你想象的那样,除非你专门设置它。此外,您在
aspectRatioMode
调用中缺少
fitInview
,这可能会扭曲图像,有时会导致“小”外观。

QGraphicsScene* scene = new QGraphicsScene(this);
QGraphicsPixmapItem p = scene->addPixmap(QPixmap(qApp->applicationDirPath() +"/france.gif"));
ui->myGraphicsView->setScene(scene);
ui->myGraphicsView->fitInView(p, Qt::KeepAspectRatio);

1
投票

根据我的经验,如果我们在场景窗口显示之前尝试 fitInView,则显示的图像会非常小。从技术上讲,在实际显示之前,场景矩形的大小并不是按照我们想要的方式设置的。因此,我们需要先让场景窗口显示出来,然后才能正确使用fitInView。

嗯,我认为解决方案可以在这里找到 Qt5 C++ QGraphicsView:图像不适合视图框架

© www.soinside.com 2019 - 2024. All rights reserved.