From a5336a0577b715edf49bef3794c6b1a8fa225a73 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Mon, 23 Apr 2012 14:39:48 +1000 Subject: More example docs MouseArea, Threading and TouchInteraction Change-Id: I9ca812d20a6c87d68ef91066ae0a4b9bc8829478 Reviewed-by: Michael Brasser --- examples/quick/threading/threadedlistmodel/timedisplay.qml | 4 ++-- examples/quick/threading/threading.qml | 12 ++++++++++++ examples/quick/threading/workerscript/workerscript.js | 4 ++-- examples/quick/threading/workerscript/workerscript.qml | 4 ++++ 4 files changed, 20 insertions(+), 4 deletions(-) (limited to 'examples/quick/threading') diff --git a/examples/quick/threading/threadedlistmodel/timedisplay.qml b/examples/quick/threading/threadedlistmodel/timedisplay.qml index 48d0f659e5..266534a57c 100644 --- a/examples/quick/threading/threadedlistmodel/timedisplay.qml +++ b/examples/quick/threading/threadedlistmodel/timedisplay.qml @@ -38,7 +38,6 @@ ** ****************************************************************************/ -// ![0] import QtQuick 2.0 Rectangle { @@ -60,6 +59,7 @@ Rectangle { source: "dataloader.js" } +// ![0] Timer { id: timer interval: 2000; repeat: true @@ -71,6 +71,6 @@ Rectangle { worker.sendMessage(msg); } } +// ![0] } } -// ![0] diff --git a/examples/quick/threading/threading.qml b/examples/quick/threading/threading.qml index b96c6975ac..cff4dd83b9 100644 --- a/examples/quick/threading/threading.qml +++ b/examples/quick/threading/threading.qml @@ -48,8 +48,20 @@ import "../../shared" as Examples \image qml-threading-example.png Threaded ListModel contains a ListView and a ListModel. The ListModel is updated asynchronusly in another thread, and the results propagate back to the main thread. + A timer requests updates from the worker thread periodically: + \snippet examples/threading/threadedlistmodel/timedisplay.qml 0 + + Inside the worker thread, the ListModel is synchronized once the data is finished loading: + \snippet examples/threading/threadedlistmodel/dataloader.js 0 WorkerScript contains an example of using a WorkerScript to offload expensive calculations into another thread. This keeps the UI from being blocked. This example calculates numbers in Pascal's Triangle, and not in a very optimal way, so it will often take several seconds to complete the calculation. By doing this in a WorkerScript in another thread, the UI is not blocked during this time. + + When the UI needs another value, a request is sent to the WorkerScript: + \snippet examples/threading/workerscript/workerscript.qml 0 + The workerscript then is free to take a really long time to calculate it: + \snippet examples/threading/workerscript/workerscript.js 0 + When it's done, the result returns to the main scene via the WorkerScript element: + \snippet examples/threading/workerscript/workerscript.qml 1 */ Item { diff --git a/examples/quick/threading/workerscript/workerscript.js b/examples/quick/threading/workerscript/workerscript.js index ada3d82589..67fbd8af9a 100644 --- a/examples/quick/threading/workerscript/workerscript.js +++ b/examples/quick/threading/workerscript/workerscript.js @@ -12,7 +12,7 @@ function triangle(row, column) { return 1; return triangle(row-1, column-1) + triangle(row-1, column); } - +//! [0] WorkerScript.onMessage = function(message) { //Calculate result (may take a while, using a naive algorithm) var calculatedResult = triangle(message.row, message.column); @@ -21,4 +21,4 @@ WorkerScript.onMessage = function(message) { column: message.column, result: calculatedResult} ); } - +//! [0] diff --git a/examples/quick/threading/workerscript/workerscript.qml b/examples/quick/threading/workerscript/workerscript.qml index 640df0b483..d66628e79e 100644 --- a/examples/quick/threading/workerscript/workerscript.qml +++ b/examples/quick/threading/workerscript/workerscript.qml @@ -43,6 +43,7 @@ import QtQuick 2.0 Rectangle { width: 320; height: 480 +//! [1] WorkerScript { id: myWorker source: "workerscript.js" @@ -56,10 +57,12 @@ Rectangle { } } } +//! [1] Row { y: 24 spacing: 24 anchors.horizontalCenter: parent.horizontalCenter +//! [0] Spinner { id: rowSpinner label: "Row" @@ -68,6 +71,7 @@ Rectangle { myWorker.sendMessage( { row: rowSpinner.value, column: columnSpinner.value } ); } } +//! [0] Spinner { id: columnSpinner -- cgit v1.2.3