QML 通过定时器实现视频循环播放和待机跳转

这个月月初开始自学和使用QML。

要求是再主界面循环播放一个视频,通过触摸屏进入菜单界面。若待机5秒,则返回视频播放。

思路是再管理员按下start按钮后,按钮和倒计时文本隐藏,视频播放;倒计时结束后将视频和倒计时重置。(倒计时 == 视频时间)

import QtQuick 2.12
import QtMultimedia 5.0
import QtQuick.Window 2.12
//设置视频播放Item {id:itemvisible: trueanchors.fill: parentMediaPlayer {id: mediaplayersource: "file:/zynsucai/fz.mp4"}VideoOutput {id:videooutputanchors.fill: parentsource: mediaplayer}MouseArea {id: playAreaanchors.fill: parent//设置双击鼠标跳转client1,定时器重置,未操作5秒后跳转视频onDoubleClicked: {item.visible = falsemediaplayer.stop()countDown.stop();client1.visible = trueattrs2.counter = 5;attrs1.counter = 61;countDown2.start()}}

倒计时文本的隐藏通过改变字体的透明度来改变

 //创建一个对象用来保存计数QtObject{//定时器控制循环播放id: attrs1;property int  counter;Component.onCompleted: {attrs1.counter = 61;}}//视频计数器的数字显示Text{id:countShow;anchors.centerIn: parent;color:"red"//设置透明度隐藏文字opacity: 0font.pixelSize: 40;}//视频通过定时器来设置循环Timer{id:countDown;interval: 1000;repeat: true;triggeredOnStart: true;onTriggered: {countShow.text = attrs1.counter;attrs1.counter -= 1;while(attrs1.counter < 0 ){countDown.stop();mediaplayer.stop();mediaplayer.playbackRatemediaplayer.play();attrs1.counter = 61;countDown.start();}}}//视频播放界面左上方的开始按钮,单击后使按钮隐藏Button{id: startButton;visible: truex:0;y:0text: "Start";onClicked: {mediaplayer.play();attrs1.counter = 61;countDown.start();startButton.visible = false}}}
Rectangle{id:client1visible: falsewidth:640;height: 480color: "#FFFFFF"Button1 {id:buttonanchors.centerIn:parentMouseArea{anchors.fill: parentonClicked: {client1.visible = falseclient2.visible = truecountDown.stop();countDown2.stop();mediaplayer.stop();}}}//client1界面待机跳转视频播放//创建一个对象用来保存计数QtObject{id: attrs2;property int  counter;Component.onCompleted: {attrs2.counter = 5;}}Timer{id:countDown2;interval: 1000;repeat: true;//running: truetriggeredOnStart: true;onTriggered: {attrs2.counter -= 1;if(attrs2.counter < 1 ){countDown2.stop()mediaplayer.play();item.visible = truecountDown.start()client1.visible = false}}}}

最后就是在后续界面的返回按钮中设置计时器的重置来达到待机的功能

   Goback{id:goback3x:490;y:330MouseArea{anchors.fill: parentonClicked: {client2.visible = falseclient1.visible = trueattrs2.counter = 5;attrs1.counter = 61;countDown2.start()}}}```


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部