的QGraphicsView / QGraphicsScene图像尺寸(QGraphicsView

2019-10-17 07:55发布

我想与QGraphicsScene一个的QGraphicsView显示图像。 我的代码是非常基本的:

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

我的问题是我的照片有一个错误的大小。 这是非常小的,有错的情况和对我的GraphicsView的中心。 随着qDebug我kwow,我的图片加载成功,它有一个大小约100x800px的。 我graphicsView较小,所以我想调整我的图片和我的GraphicsView大小来调节它。

该graphicsView在主窗口形式设定和场景是在头部声明:“QGraphicsScene景象;”

我尝试一切皆有可能的世界(我认为),但graphicsView是alaways空或包含小版本的图片。 当我复制/粘贴互联网的一些代码,我总是得到这个问题。 我也尝试用这个例子: Qt的GUI开发-显示使用的QGraphicsView二维格栅 ,同样的问题...

也许我是非常非常非常累,但我真的不明白什么是错的。 请帮帮我 :)

Answer 1:

sceneRect()可能不是你所认为的是,除非你专门设置它。 你还缺少aspectRatioModefitInview呼叫可以歪曲的形象,有时会造成“小”的外观。

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


Answer 2:

从我的经验,如果我们试图显示现场窗口之前fitInView一个显示的图像是非常小的。 技术上,sceneRect尺寸没有我们想要的,直到它实际上是显示方式设置。 因此,我们需要让现场窗口显示出来,才可以正常使用fitInView。

嗯,我想该解决方案可在这里QT5 C ++的QGraphicsView:图片不适合图框



文章来源: QGraphicsView / QGraphicsScene image size