我想用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我知道我的图片加载成功,它的大小约为100x800px。我的graphicsView较小,所以我想调整我的图片大小来调整我的GraphicsView大小。
在主窗口Form中设置graphicsView,并在标题中声明场景:“QGraphicsScene scene;”
我尝试在世界上一切皆有可能(我认为)但是graphicsView是空白的或包含图片的小版本。当我复制/粘贴一些互联网代码时,我总是遇到这个问题。我也尝试这个例子:Qt GUI Development - Displaying a 2D grid using QGraphicsView,同样的问题......
也许我非常非常累但我真的不明白出了什么问题。请帮帮我:)。
答案 0 :(得分: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 :(得分:0)
根据我的经验,如果我们在显示场景窗口之前尝试fitInView,则显示的图像非常小。从技术上讲,在实际显示之前,sceneRect大小没有按照我们想要的方式设置。因此,在正确使用fitInView之前,我们需要让场景窗口显示出来。
嗯,我认为这里有解决方案 Qt5 C++ QGraphicsView: Images don't fit view frame