c++ - 如何在 Qt QGraphicsView 中全宽显示图像?
问题描述
我正在使用此代码加载图像并在屏幕中显示。
void MainWindow::on_actionOpen_triggered(void){
QString fileName;
fileName = QFileDialog::getOpenFileName(this,
tr("Open Image"), "C:\\Users", tr("Image Files (*.png *.jpg *.jpeg *.bmp)"));
qim.load( fileName );
pixmap = QPixmap::fromImage( qim );
scene.clear();
scene.addPixmap( pixmap );
ui->graphicsView->setScene(&scene);
}
但是当我上传一张小图片时,它并没有填满屏幕,而是以原始大小显示。如你看到的:
所需的屏幕应如下所示:
(我正在尝试制作类似于此站点的应用程序。灰度无关紧要。)
解决方案
这解决了我的问题:
qim.load( fileName );
pixmap = QPixmap::fromImage( qim );
QPixmap scaled_img = pixmap.scaled(this->width(), this->height(), Qt::KeepAspectRatio);
scene.clear();
scene.addPixmap( scaled_img );
ui->graphicsView->setScene(&scene);
推荐阅读
- php - 谈论并发 PHP 时的最佳方法
- python - 安装到 --target 目录时,如何对多个目录中已安装的 pgks 进行 pip 检查?
- cocoa - 显示工作表后,工作表中的 Mac OS 10.14+ NSTextField 不会以编程方式更新
- node.js - NodeJS:由于不支持的 mime 类型而未加载样式表
- button - Photoswipe 将关闭按钮添加到照片并隐藏按钮栏
- keras - 如何在神经网络的训练时期访问损失和准确率的数值?
- angular - 在 ag-grid 内安装一个 mat-accordion
- amazon-web-services - 70 TB Cassandra 迁移到 AWS
- go - 控制未导出的结构字段
- c# - DateTime 的通用端点还是三个不同的端点?