如何在QGraphicsScene中缩放图像? (Qt 5.11)

时间:2018-06-25 17:09:37

标签: c++ qt qt5 qgraphicsscene qimage

我在使图像预览器中的图像正确缩放到窗口大小时遇到​​麻烦。我有一个ImgViewer窗口来预览图像,并且想在主窗口选择新文件时更新显示的图像。在主窗口中单击新图像后,图像已正确更新,但是缩放比例未应用。对于ImgViewer窗口,图像总是显示得太大。

这是我为图像更新功能编写的代码:

void ImgViewer::update_img(QString img_path){
    img_object = new QImage();
    img_object->load(img_path);
    image = QPixmap::fromImage(*img_object);
    QPixmap scaled_img = image.scaled(img_object->size(), Qt::KeepAspectRatio);

    scene = new QGraphicsScene(this);
    scene->addPixmap(scaled_img);
    scene->setSceneRect(scaled_img.rect());

    ui->graphicsView->setScene(scene);
}

每次调整窗口大小时都需要重置场景吗?

1 个答案:

答案 0 :(得分:1)

在以下code中使用Windows大小:

QPixmap scaled_img = image.scaled(this->width(), this->height(), Qt::KeepAspectRatio);

代替:

QPixmap scaled_img = image.scaled(img_object->size(), Qt::KeepAspectRatio);

将波纹管用于不同的宽高比:

enter image description here