Qt:问题与QGraphicsscene显示图像

时间:2014-11-07 03:36:08

标签: c++ qt qgraphicsscene qimage

我正在尝试使用QT开发非常简单的图像查看器。我使用以下代码在QGraphicsScene小部件上显示图像:

QImage image(fileName);


firstPicture = new QGraphicsScene();
firstPicture->addPixmap(QPixmap::fromImage(image));


ui->graphicsView->setScene(firstPicture);
ui->graphicsView->fitInView(firstPicture->sceneRect() ,Qt::KeepAspectRatio);

我收到以下输出:output

如何将图像放入GraphicsScene

2 个答案:

答案 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的大小,则场景会缩放,您可以正确地看到所有内容。