QML:Timer定时器使用
程序员文章站
2022-06-09 11:18:26
...
效果图
关键代码
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.2
Window {
visible: true
width: 640
height: 480
title: qsTr("定时器")
Rectangle{
id:root;
width:640;
height:480;
//封装自定义属性
QtObject{
id:attrs;
property int counter;
Component.onCompleted: {
attrs.counter=0;
}
}
Timer{
id:helloTimer;
interval: 1000; //定时周期
repeat:true; //
triggeredOnStart: true;
onTriggered: {
attrs.counter++;
helloText.text=attrs.counter;
// if(attrs.counter===60){
// helloTimer.stop();
// helloText.text="hello!!!";
// }
}
}
Text{
id:helloText;
width:100;
height:35;
anchors.centerIn: parent;
text:"0";
font.family: "微软雅黑";
font.pixelSize: 64;
color:"black";
}
Button{
id:startBtn;
anchors.left:parent.left;
anchors.leftMargin: 4;
anchors.bottom:parent.bottom;
anchors.bottomMargin: 4;
style:ButtonStyle{
background: Rectangle{
implicitWidth: 100;
implicitHeight: 35;
radius:5;
color:"gray";
border.width: control.pressed?2:1;
border.color: (control.hovered||control.pressed)?"green":"#888888";
}
label: Text{
verticalAlignment: Text.AlignVCenter;
horizontalAlignment: Text.AlignHCenter;
font.family: "微软雅黑";
font.pointSize: 16;
color: "green";
text: "开启";
}
}
onClicked: {
helloTimer.start();
}
}
Button{
id:stopBtn;
anchors.left:startBtn.right;
anchors.leftMargin: 4;
anchors.bottom:parent.bottom;
anchors.bottomMargin: 4;
style:ButtonStyle{
background: Rectangle{
implicitWidth: 100;
implicitHeight: 35;
radius:5;
color:"gray";
border.width: control.pressed?2:1;
border.color: (control.hovered||control.pressed)?"green":"#888888";
}
label: Text{
verticalAlignment: Text.AlignVCenter;
horizontalAlignment: Text.AlignHCenter;
font.family: "微软雅黑";
font.pointSize: 16;
color: "blue";
text: "停止";
}
}
onClicked: {
helloTimer.stop();
}
}
Button{
id:restartBtn;
anchors.left:stopBtn.right;
anchors.leftMargin: 4;
anchors.bottom:parent.bottom;
anchors.bottomMargin: 4;
style:ButtonStyle{
background: Rectangle{
implicitWidth: 100;
implicitHeight: 35;
radius:5;
color:"gray";
border.width: control.pressed?2:1;
border.color: (control.hovered||control.pressed)?"green":"#888888";
}
label: Text{
verticalAlignment: Text.AlignVCenter;
horizontalAlignment: Text.AlignHCenter;
font.family: "微软雅黑";
font.pointSize: 16;
color: "red";
text: "重启";
}
}
onClicked: {
helloTimer.restart();
}
}
}
}
完整项目
GitHub下载:
https://github.com/MarsXiaolei/QtCode/blob/master/20191112.zip