如何在 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)的主要内容,如果未能解决你的问题,请参考以下文章
Qt - 如何将 QGraphicsScene 缩放到 QGraphicsView
关于在 QGraphicsView/QGraphicsScene 上缩放的一般建议
在 QGraphicsScene 中缩放和旋转的 QGraphicsPixmapItem 的奇怪绘图行为