From c8891b50d1f30c7c07bf96f8eaf2e1002ce573b8 Mon Sep 17 00:00:00 2001 From: Erik Prabowo Kamal Date: Thu, 29 Aug 2019 15:30:00 +0800 Subject: Set up a way for the thread to quit --- controller.cxx | 16 ++++++++++++++++ controller.hxx | 18 ++++++++++++++++++ kelakon.pro | 6 ++++-- main.cxx | 9 ++------- 4 files changed, 40 insertions(+), 9 deletions(-) create mode 100644 controller.cxx create mode 100644 controller.hxx diff --git a/controller.cxx b/controller.cxx new file mode 100644 index 0000000..d1271b9 --- /dev/null +++ b/controller.cxx @@ -0,0 +1,16 @@ +#include "worker.hxx" +#include "controller.hxx" + +Controller::Controller() +{ + Worker* worker = new Worker{}; + worker->moveToThread(&thread); + connect(&thread, &QThread::finished, worker, &QObject::deleteLater); + thread.start(); +} + +Controller::~Controller() +{ + thread.quit(); + thread.wait(); +} diff --git a/controller.hxx b/controller.hxx new file mode 100644 index 0000000..e293ec4 --- /dev/null +++ b/controller.hxx @@ -0,0 +1,18 @@ +#ifndef CONTROLLER_HXX +#define CONTROLLER_HXX + +#include + +class Controller : public QObject +{ + Q_OBJECT + + public: + Controller(); + ~Controller(); + + private: + QThread thread; +}; + +#endif // CONTROLLER_HXX diff --git a/kelakon.pro b/kelakon.pro index 34a2948..5df2f8e 100644 --- a/kelakon.pro +++ b/kelakon.pro @@ -5,12 +5,14 @@ QT += \ debug: DEFINES += DEBUG HEADERS += \ + user.hxx \ worker.hxx \ - user.hxx + controller.hxx SOURCES += \ - worker.cxx \ user.cxx \ + worker.cxx \ + controller.cxx \ main.cxx RESOURCES += kelakon.qrc diff --git a/main.cxx b/main.cxx index 5f0e13d..0b52736 100644 --- a/main.cxx +++ b/main.cxx @@ -1,8 +1,7 @@ #include #include -#include #include "user.hxx" -#include "worker.hxx" +#include "controller.hxx" int main(int argc, char* argv[]) { @@ -10,10 +9,6 @@ int main(int argc, char* argv[]) QGuiApplication app(argc, argv); QQmlApplicationEngine engine; - Worker worker{}; - QThread thread; - worker.moveToThread(&thread); - qmlRegisterSingletonType("id.co.darapsa.kelakon.user", 0, 1, "User", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject* { Q_UNUSED(engine) Q_UNUSED(scriptEngine) @@ -23,7 +18,7 @@ int main(int argc, char* argv[]) }); engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); - thread.start(); + Controller controller{}; return app.exec(); } -- cgit v1.2.3