定時器 Timer
- 屬性
interval
: 事件間隔毫秒repeat
: 多次執行,默認只執行一次running
: 定時器啟動triggeredOnStart
: 定時器啟動時立刻觸發一次事件
- 信號
triggered()
: 定時時間到,觸發此信號
- 方法
restart()
: 重啟定時器start()
: 啟動定時器stop()
: 停止定時器
- 定時器使用示例
-
import QtQuick 2.12import QtQuick.Window 2.12Window {visible: truewidth: 640height: 480title: qsTr("Hello World")Text{id: text1x: parent.width - 220y: parent.height - 30text:"time"MouseArea{anchors.fill: parentonClicked: {timer1.running = !timer1.running}}}Timer{id: timer1// 間隔事件-毫秒interval: 1000// 定時器啟動后立刻觸發一次triggeredOnStart: true// 觸發多次repeat: true// 定時器啟動running: true// 接收觸發信號onTriggered: {text1.text = Date().toString()}}}
-
線程任務 WorkerScript
WorkerScript
是QML提供的一個輕量級線程機制,用于在后臺線程中執行JavaScript
代碼。- 它適合簡單的任務,但不適用于復雜的多線程需求。
- 屬性
source
: 指定多線程訪問的腳本
- 信號
message
: 線程處理腳本中sendMessage發出消息后,此信號觸發
- 方法
sendMessage
: 發送消息到另一個線程
- 線程使用示例
-
import QtQuick 2.12import QtQuick.Window 2.12Window {visible: truewidth: 640height: 480title: qsTr("Hello World")Rectangle{width: 280height: 200color: "#AAAAAA"Text{id: mytexttext: "click"}WorkerScript{id: mywork// 多線程訪問的腳本source: "myscript.js"// 接收線程處理后的數據onMessage: (msg)=>{print("onMessage: " + msg.reply)}}MouseArea{anchors.fill: parentonClicked: {// 給線程發送數據mywork.sendMessage({'name':'testname',"datas":[3, 5, 7, 9]})}}}}
-
- 線程腳本
myscript.js
-
// 接收主線程發送的數據WorkerScript.onMessage = function(msg){var vremsg = msg.name + ": "for(i = 0; i < msg.datas.length; i++){vremsg += msg.datas[i] + "|"}print(vremsg)WorkerScript.sendMessage({'reply': vremsg})}
-