Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 如何同时显示纵向和纵向;将景观图像转换为网格上的正方形而不影响纵横比?_Image_Qt_Gridview_Qml_Image Gallery - Fatal编程技术网

Image 如何同时显示纵向和纵向;将景观图像转换为网格上的正方形而不影响纵横比?

Image 如何同时显示纵向和纵向;将景观图像转换为网格上的正方形而不影响纵横比?,image,qt,gridview,qml,image-gallery,Image,Qt,Gridview,Qml,Image Gallery,我正在使用GridView创建一个图像库,这些图像是我从机器上的某个文件夹中显示的。图像具有不同的宽高比。很少有肖像图像的高度是宽度的3倍。有些图像是横向的,宽度约为高度的3倍。有些图像是平方的 我的图库的问题是,我的GridView的每个Image组件都有一个正方形,如下所示。这使得纵向和横向图像被错误地拉伸,因为网格中的每个块都是正方形。从而导致图像的纵横比向上倾斜 问题: 如何确保在不扭曲纵横比的情况下,将纵向和横向图像显示到正方形中?我正在考虑把一些黑色/灰色的背景放在正方形的部分,在肖

我正在使用
GridView
创建一个图像库,这些图像是我从机器上的某个文件夹中显示的。图像具有不同的宽高比。很少有肖像图像的高度是宽度的3倍。有些图像是横向的,宽度约为高度的3倍。有些图像是平方的

我的图库的问题是,我的
GridView
的每个
Image
组件都有一个正方形,如下所示。这使得纵向和横向图像被错误地拉伸,因为网格中的每个块都是正方形。从而导致图像的纵横比向上倾斜

问题: 如何确保在不扭曲纵横比的情况下,将纵向和横向图像显示到正方形中?我正在考虑把一些黑色/灰色的背景放在正方形的部分,在肖像或风景图片上是空白的?但可能还有其他窍门

代码:

import QtQuick 2.5
import Qt.labs.folderlistmodel 2.1
import QtQuick.Controls 1.1
import QtQml.Models 2.1

GridView {
  cellHeight: height/2
  cellWidth: width/2
  clip: true

  FolderListModel {
    id: dir_model
    folder: "/path/to/images/folder"
    nameFilters: ["*.png"]
  }

  Component {
    id: file_delegate

    Image {
        width: (parent.width)/2
        height: (parent.width)/2
        source: fileURL
    }
  }

  model: dir_model
  delegate: file_delegate
}

只需将
Image
属性设置为
Image.preserveApectFit
正如医生所说:

图像将均匀缩放以适合,无需裁剪


您是否尝试在图像上使用
fillMode:Image.preserveApectFit
?完美。这就是我需要的