如何将一组图像加载到QML中的图像?

如何将一组图像加载到QML中的图像?,qml,qt-quick,Qml,Qt Quick,我想将一些图像加载到QML中的图像对象。我想在一个循环中一个接一个地做,我想有一些延迟,因为它应该假装看起来像一个动画。我是Qt和QML的新手,所以有人能帮我如何开始吗 如果您使用的是QtQuick 2,则AnimatedSprite是执行此操作的最佳方法: 否则,您可以使用计时器或数字信息触发更改图像源,但在第一次加载图像时可能会出现不可预测的延迟(缓存应该在第一次循环后解决此问题)。如果只有几个图像,可以有三个图像并循环它们的可见性。在QML 1.x和2.0中工作的最简单解决方案是使用中继器

我想将一些图像加载到QML中的图像对象。我想在一个循环中一个接一个地做,我想有一些延迟,因为它应该假装看起来像一个动画。我是Qt和QML的新手,所以有人能帮我如何开始吗

如果您使用的是QtQuick 2,则AnimatedSprite是执行此操作的最佳方法:


否则,您可以使用计时器或数字信息触发更改图像源,但在第一次加载图像时可能会出现不可预测的延迟(缓存应该在第一次循环后解决此问题)。如果只有几个图像,可以有三个图像并循环它们的可见性。

在QML 1.x和2.0中工作的最简单解决方案是使用
中继器和
计时器:

import QtQuick 2.0

Rectangle {
    id: base;
    width: 800;
    height: 600;

    property variant images : [
        "image1.jpg",
        "image2.jpg",
        "image3.jpg",
        "image4.jpg",
        "image5.jpg"
    ];
    property int currentImage : 0;

    Repeater {
        id: repeaterImg;
        model: images;
        delegate: Image {
            source: modelData;
            asynchronous: true;
            visible: (model.index === currentImage);
        }
    }

    Timer {
        id: timerAnimImg:
        interval: 500; // here is the delay between 2 images in msecs
        running: false; // stopped by default, use start() or running=true to launch
        repeat: true;
        onTriggered: {
            if (currentImage < images.length -1) {
                currentImage++; // show next image
            }
            else {
                currentImage = 0; // go back to the first image at the end
            }
        }
    }
}
导入QtQuick 2.0
长方形{
id:基地;
宽度:800;
身高:600;
属性变量图像:[
“image1.jpg”,
“image2.jpg”,
“image3.jpg”,
“image4.jpg”,
“image5.jpg”
];
属性int currentImage:0;
中继器{
id:repeaterImg;
模型:图像;
代表:图像{
资料来源:模型数据;
异步:true;
可见:(model.index==currentImage);
}
}
计时器{
id:TIMERANIMG:
间隔:500;//这是两个图像之间的延迟,单位为毫秒
running:false;//默认情况下已停止,请使用start()或running=true启动
重复:正确;
反对:{
如果(currentImage
如果您不想在到达最后一个图像时重新启动动画,只需替换
currentImage=0带有
停止()onTriggered
中的code>

此外,您可能还需要稍微调整
中继器中的
图像
代理,以获得所需的外观(大小、填充模式、位置等)