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