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

Posted

技术标签:

【中文标题】如何在 QGraphicsScene 中缩放图像? (Qt 5.11)【英文标题】:How to scale images in QGraphicsScene? (Qt 5.11) 【发布时间】:2018-06-25 17:09:36 【问题描述】:

我在将图像预览器中的图像正确缩放到窗口大小时遇到​​了一些问题。我有一个用于预览图像的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】:

在下面code 中使用您的窗口大小:

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

而不是:

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

波纹管用于不同的纵横比:

【讨论】:

以上是关于如何在 QGraphicsScene 中缩放图像? (Qt 5.11)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QGraphicsView 中启用平移和缩放

Qt - 如何将 QGraphicsScene 缩放到 QGraphicsView

关于在 QGraphicsView/QGraphicsScene 上缩放的一般建议

在 QGraphicsScene 中缩放和旋转的 QGraphicsPixmapItem 的奇怪绘图行为

缩放 QGraphicsScene 以填充整个 QGraphicsView

当窗口大小改变时,如何在 Qt 中自动缩放图表?