我正在尝试使用QT开发非常简单的图像查看器。我使用以下代码在QGraphicsScene
小部件上显示图像:
QImage image(fileName);
firstPicture = new QGraphicsScene();
firstPicture->addPixmap(QPixmap::fromImage(image));
ui->graphicsView->setScene(firstPicture);
ui->graphicsView->fitInView(firstPicture->sceneRect() ,Qt::KeepAspectRatio);
我收到以下输出:
如何将图像放入GraphicsScene
?
答案 0 :(得分:2)
此方法仅在视图显示您的场景时有效。在你的情况下,你没有调用show()。解决方案:
在场景已经显示时使用您的方法。
您可以重新实现showEvent并在此处使用您的方法。
您可以自己缩放图像并将此缩放图像设置为场景。
您也可以尝试使用:Qt::IgnoreAspectRatio
代替Qt::KeepAspectRatio
。
答案 1 :(得分:1)
您可以创建继承自QGraphicsView
的自定义类。您应该在自定义resizeEvent( QResizeEvent *event )
中重新实现QGraphicsView
,例如:
void MyView::resizeEvent(QResizeEvent *event)
{
fitInView(firstPicture->sceneRect(), Qt::KeepAspectRatio);
QGraphicsView::resizeEvent(event);
}
这样,视图将始终显示整个场景。即如果更改了窗口大小并调整了graphicsView的大小,则场景会缩放,您可以正确地看到所有内容。