我想用 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,但同样的问题。
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);
根据我的经验,如果我们在场景窗口显示之前尝试 fitInView,则显示的图像会非常小。从技术上讲,在实际显示之前,场景矩形的大小并不是按照我们想要的方式设置的。因此,我们需要先让场景窗口显示出来,然后才能正确使用fitInView。
嗯,我认为解决方案可以在这里找到 Qt5 C++ QGraphicsView:图像不适合视图框架