QT开发中文网

qml实现图标两个状态闪烁,两个状态为两张图片,对外留出开关,开关打开时,图片开始闪烁,闪烁速度可控

你可以使用QML中的Image组件和动画来实现这个功能,以下是一个简单的示例代码:

import QtQuick 2.0

Item {
    property bool isOn: false // 开关状态
    property int blinkInterval: 500 // 闪烁间隔时间(毫秒)

    Image {
        id: offImage
        source: "off.png"
        visible: !isOn
    }

    Image {
        id: onImage
        source: "on.png"
        visible: isOn
    }

    SequentialAnimation { // 图片闪烁动画
        running: isOn
        loops: Animation.Infinite

        NumberAnimation {
            target: onImage
            property: "opacity"
            from: 1.0
            to: 0.0
            duration: blinkInterval / 2
            easing.type: Easing.InOutQuad
        }

        PauseAnimation {
            duration: blinkInterval / 2
        }
        
         NumberAnimation {
            target : offImage 
            property : "opacity" 
             from : 1.0 
             to : 0.0 
             duration : blinkInterval / 2 
             easing.type : Easing.InOutQuad 
         } 

         PauseAnimation { 
             duration : blinkInterval / 2 
         } 
        
         NumberAnimation { 
             target : onImage 
             property : "opacity" 
             from : 0.0 
             to : 1.0 
             duration : blinkInterval / 2 
             easing.type : Easing.InOutQuad 
         } 

         PauseAnimation {  
              duration : blinkInterval / 2  
          }  

          NumberAnimation {  
              target : offImage  
              property :"opacity"  
              from : 0.0  
              to : 1.0  
              duration : blinkInterval / 2 
              easing.type : Easing.InOutQuad 
          } 

          PauseAnimation {   
              duration : blinkInterval / 2   
          } 
    }
}

在上述代码中,isOn属性表示开关状态,当其为真时闪烁动画开始播放,为假时停止;blinkInterval属性控制闪烁间隔时间。图片的切换使用了Image组件的visible属性来实现。

闪烁动画使用了QML中的SequentialAnimation组件,并且包含四个子动画,分别对应两张图片的显隐和透明度变化。其中每个子动画包含一个持续时间为半个闪烁间隔时间的渐变效果(淡出或淡入)和一个等待半个闪烁间隔时间的暂停动画。

你可以将上述代码复制到一个QML文件中,并把 off.png, on.png 替换成自己的图标路径。然后创建一个窗口并将该Item添加到窗口即可看到效果。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:http://qt.0voice.com/?id=3776

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?