From 97ac5356b0e7268a955aaa7717cc9d624a8aa287 Mon Sep 17 00:00:00 2001 From: Susumu Endo <susumu.endo@qt.io> Date: Mon, 28 Aug 2023 10:34:10 +0900 Subject: [PATCH] Divided the main.qml to View.qml and Controller.qml. --- Controller.qml | 29 ++++++++++++++++++ View.qml | 28 +++++++++++++++++ main.qml | 82 ++++++++++++++++++++------------------------------ qml.qrc | 2 ++ 4 files changed, 92 insertions(+), 49 deletions(-) create mode 100644 Controller.qml create mode 100644 View.qml diff --git a/Controller.qml b/Controller.qml new file mode 100644 index 0000000..eb1be46 --- /dev/null +++ b/Controller.qml @@ -0,0 +1,29 @@ +import QtQuick 2.15 +import QtQml.WorkerScript 2.15 +import io.qt.examples.backend 1.0 + +QtObject { + id: root + objectName: "Controller.qml" + readonly property BackEnd backend: BackEnd { + objectName: root.objectName + "backend" + onUserNameChanged: { + console.log("[" + objectName + "].userName:" + userName) + } + onHandledResultsByWorker: { + console.log("[" + objectName + "].onHandledResultsByWorker(" + result + ")") + } + onHandledResultsByWorkerThread: { + console.log("[" + objectName + "].onHandledResultsByWorkerThread(" + result + ")") + } + } + readonly property WorkerScript worker: WorkerScript { + objectName: root.objectName + "worker" + source: "sampleWorkerScript.mjs" + onMessage: { + console.log("[" + objectName + "].onMessage(" + messageObject + ")") + console.log("[" + objectName + "].onMessage(" + messageObject.message + ")") + } + } + +} diff --git a/View.qml b/View.qml new file mode 100644 index 0000000..40f5251 --- /dev/null +++ b/View.qml @@ -0,0 +1,28 @@ +import QtQuick 2.15 +import QtQuick.Controls 2.15 + +Column { + id: root + objectName: "View.qml" + property alias textField: textField + property alias buttonFuncA: buttonFuncA + property alias buttonFuncB: buttonFuncB + property alias buttonWS: buttonWS + + TextField { + id: textField + placeholderText: qsTr("User name") + } + Button { + id: buttonFuncA + text: "call BackEnd.funcA" + } + Button { + id: buttonFuncB + text: "call BackEnd.funcB" + } + Button { + id: buttonWS + text: "call WorkerScript" + } +} diff --git a/main.qml b/main.qml index fc6fb0a..73969e3 100644 --- a/main.qml +++ b/main.qml @@ -1,8 +1,5 @@ import QtQuick 2.15 -import QtQuick.Window 2.15 import QtQuick.Controls 2.15 -import QtQml.WorkerScript 2.15 -import io.qt.examples.backend 1.0 ApplicationWindow { id: root @@ -11,64 +8,51 @@ ApplicationWindow { height: 480 visible: true - BackEnd { - id: backend - objectName: root.objectName + "backend" - onUserNameChanged: { - console.log("[" + objectName + "].userName:" + userName) - } - onHandledResultsByWorker: { + Connections { + objectName: root.objectName + ".Connections(" + target.objectName + ")" + target: controller.backend + function onHandledResultsByWorker(result) { console.log("[" + objectName + "].onHandledResultsByWorker(" + result + ")") - buttonFuncA.enabled = true + view.buttonFuncA.enabled = true } - onHandledResultsByWorkerThread: { + function onHandledResultsByWorkerThread(result) { console.log("[" + objectName + "].onHandledResultsByWorkerThread(" + result + ")") - buttonFuncB.enabled = true + view.buttonFuncB.enabled = true } } - WorkerScript { - id: worker - objectName: root.objectName + "worker" - source: "sampleWorkerScript.mjs" - onMessage: { + Connections { + objectName: root.objectName + ".Connections(" + target.objectName + ")" + target: controller.worker + function onMessage(messageObject) { console.log("[" + objectName + "].onMessage(" + messageObject + ")") console.log("[" + objectName + "].onMessage(" + messageObject.message + ")") - buttonWS.enabled = true + view.buttonWS.enabled = true } } - Column { + Controller { + id: controller + objectName: root.objectName + ".controller" + } + + View { + id: view + objectName: root.objectName + ".view" anchors.centerIn: parent spacing: 10 - TextField { - text: backend.userName - placeholderText: qsTr("User name") - onEditingFinished: backend.userName = text - } - Button { - id: buttonFuncA - text: "call BackEnd.funcA" - onClicked: { - backend.funcA() - enabled = false - } - } - Button { - id: buttonFuncB - text: "call BackEnd.funcB" - onClicked: { - backend.funcB() - enabled = false - } - } - Button { - id: buttonWS - text: "call WorkerScript" - enabled: worker.ready - onClicked: { - worker.sendMessage({ 'message': 'call WorkerScript' }) - enabled = false - } + textField.text: controller.backend.userName + textField.onEditingFinished: controller.backend.userName = textField.text + buttonFuncA.onClicked: { + controller.backend.funcA() + buttonFuncA.enabled = false + } + buttonFuncB.onClicked: { + controller.backend.funcB() + buttonFuncB.enabled = false + } + buttonWS.onClicked: { + controller.worker.sendMessage({ 'message': 'call WorkerScript' }) + buttonWS.enabled = false } } } diff --git a/qml.qrc b/qml.qrc index 8297584..3d0f4c6 100644 --- a/qml.qrc +++ b/qml.qrc @@ -2,5 +2,7 @@ <qresource prefix="/"> <file>main.qml</file> <file>sampleWorkerScript.mjs</file> + <file>View.qml</file> + <file>Controller.qml</file> </qresource> </RCC> -- GitLab