diff options
author | Alan Alpert <alan.alpert@nokia.com> | 2012-04-23 14:39:48 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-04-26 04:53:08 +0200 |
commit | a5336a0577b715edf49bef3794c6b1a8fa225a73 (patch) | |
tree | a7cc3ad59d7af572e1582aa9f8eb9546697a7e6c /examples/quick/threading | |
parent | 5e62f313588dc81c7284c4eb451cb9ebe7f3c994 (diff) |
More example docs
MouseArea, Threading and TouchInteraction
Change-Id: I9ca812d20a6c87d68ef91066ae0a4b9bc8829478
Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
Diffstat (limited to 'examples/quick/threading')
4 files changed, 20 insertions, 4 deletions
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 |