diff options
author | ꦌ ꦫꦶ ꦏ꧀ꦦꦿ ꦧ ꦮ ꦑ ꦩ ꦭ꧀ <erik@darapsa.co.id> | 2019-09-07 15:40:47 +0800 |
---|---|---|
committer | ꦌ ꦫꦶ ꦏ꧀ꦦꦿ ꦧ ꦮ ꦑ ꦩ ꦭ꧀ <erik@darapsa.co.id> | 2019-09-07 15:40:47 +0800 |
commit | 16bc24b796de76ec1a5fa66dcfe2129a2b02d370 (patch) | |
tree | cc27194eca692f7a77adb86c723e25e34dfaeac8 | |
parent | 48895cf915d4c1be2534588f18f58ea78079d6ae (diff) |
Changed controller's parent to the engine
to give more flexibility
-rw-r--r-- | controller.cxx | 11 | ||||
-rw-r--r-- | kelakon.pro | 2 | ||||
-rw-r--r-- | main.cxx | 21 | ||||
-rw-r--r-- | user.hxx | 1 |
4 files changed, 19 insertions, 16 deletions
diff --git a/controller.cxx b/controller.cxx index 4e518f4..757d475 100644 --- a/controller.cxx +++ b/controller.cxx @@ -1,14 +1,19 @@ +#include <QQmlApplicationEngine> #include "worker.hxx" #include "controller.hxx" -Controller::Controller(QObject* parent) : - QObject{parent} +Controller::Controller(QObject* parent) : QObject{parent} { Worker* worker = new Worker{}; worker->moveToThread(&thread); connect(&thread, &QThread::finished, worker, &QObject::deleteLater); - connect(parent, SIGNAL(logIn(QString, QString)), + + auto engine = dynamic_cast<QQmlApplicationEngine*>(parent); + auto rootObjects = engine->rootObjects(); + auto appWindow = rootObjects[0]; + connect(appWindow, SIGNAL(logIn(QString, QString)), worker, SLOT(logIn(QString, QString))); + thread.start(); } diff --git a/kelakon.pro b/kelakon.pro index 8b9ead1..847864d 100644 --- a/kelakon.pro +++ b/kelakon.pro @@ -2,6 +2,8 @@ QT += \ quickcontrols2 \ svg +*-g++: QMAKE_CXXFLAGS += -std=gnu++17 +*-clang: QMAKE_CXXFLAGS += -std=c++17 debug: DEFINES += DEBUG HEADERS += \ @@ -10,21 +10,16 @@ int main(int argc, char* argv[]) QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication app(argc, argv); QQmlApplicationEngine engine; - - qmlRegisterSingletonType<User>("id.co.darapsa.kelakon.user", 0, 1, "User", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject* { - Q_UNUSED(engine) - Q_UNUSED(scriptEngine) - return new User{}; - }); - + User::typeId = qmlRegisterSingletonType<User>("id.co.darapsa.kelakon.user" + , 0, 1, "User" + , [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject* { + Q_UNUSED(engine) + Q_UNUSED(scriptEngine) + return new User{}; + }); engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); - auto rootObjects = engine.rootObjects(); - if (rootObjects.isEmpty()) return -1; - - auto appWindow = rootObjects[0]; - Controller controller{appWindow}; + Controller controller{&engine}; TaskList taskList; engine.rootContext()->setContextProperty("taskList", &taskList); - return app.exec(); } @@ -32,6 +32,7 @@ class User : public QObject m_isLoggedIn{isLoggedIn} {} ~User() {} + inline static int typeId; QString const& name() const { return m_name; } QString const& password() const { return m_password; } |