diff --git a/src/qmlregister.cpp b/src/qmlregister.cpp
index 47a2d06bbab739ba5602cbc30cd5f8ec3518236f..b5bb3390486643ae0c494e3232380ccf1357c22d 100644
--- a/src/qmlregister.cpp
+++ b/src/qmlregister.cpp
@@ -1,4 +1,4 @@
-/*!
+/*
  * Copyright (C) 2020 by Savoir-faire Linux
  * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
  *
@@ -62,8 +62,8 @@
 
 #define QML_REGISTERTYPE(NS, T) qmlRegisterType<T>(NS, VER_MAJ, VER_MIN, #T);
 
-#define QML_REGISTERNAMESPACE(T, NAME) \
-    qmlRegisterUncreatableMetaObject(T, NS_MODELS, VER_MAJ, VER_MIN, NAME, "")
+#define QML_REGISTERNAMESPACE(NS, T, NAME) \
+    qmlRegisterUncreatableMetaObject(T, NS, VER_MAJ, VER_MIN, NAME, "")
 
 #define QML_REGISTERUNCREATABLE(N, T) \
     qmlRegisterUncreatableType<T>(N, VER_MAJ, VER_MIN, #T, "Don't try to add to a qml definition of " #T);
@@ -81,6 +81,16 @@ namespace Utils {
 void
 registerTypes()
 {
+    // Hack for QtCreator autocomplete (part 2)
+    // https://bugreports.qt.io/browse/QTCREATORBUG-20569
+    // Use a dummy object to register the import namespace.
+    // This occurs when we register from within MainApplication
+    QML_REGISTERNAMESPACE(NS_MODELS, dummy::staticMetaObject, "");
+    QML_REGISTERNAMESPACE(NS_ADAPTERS, dummy::staticMetaObject, "");
+    QML_REGISTERNAMESPACE(NS_CONSTANTS, dummy::staticMetaObject, "");
+    QML_REGISTERNAMESPACE(NS_HELPERS, dummy::staticMetaObject, "");
+    QML_REGISTERNAMESPACE(NS_ENUMS, dummy::staticMetaObject, "");
+
     // QAbstractListModels
     QML_REGISTERTYPE(NS_MODELS, AccountListModel);
     QML_REGISTERTYPE(NS_MODELS, DeviceItemListModel);
@@ -112,13 +122,13 @@ registerTypes()
     QML_REGISTERSINGLETONTYPE_WITH_INSTANCE(NameDirectory);
 
     // Lrc namespaces, models, and singletons
-    QML_REGISTERNAMESPACE(lrc::api::staticMetaObject, "Lrc");
-    QML_REGISTERNAMESPACE(lrc::api::account::staticMetaObject, "Account");
-    QML_REGISTERNAMESPACE(lrc::api::call::staticMetaObject, "Call");
-    QML_REGISTERNAMESPACE(lrc::api::datatransfer::staticMetaObject, "Datatransfer");
-    QML_REGISTERNAMESPACE(lrc::api::interaction::staticMetaObject, "Interaction");
-    QML_REGISTERNAMESPACE(lrc::api::video::staticMetaObject, "Video");
-    QML_REGISTERNAMESPACE(lrc::api::profile::staticMetaObject, "Profile");
+    QML_REGISTERNAMESPACE(NS_MODELS, lrc::api::staticMetaObject, "Lrc");
+    QML_REGISTERNAMESPACE(NS_MODELS, lrc::api::account::staticMetaObject, "Account");
+    QML_REGISTERNAMESPACE(NS_MODELS, lrc::api::call::staticMetaObject, "Call");
+    QML_REGISTERNAMESPACE(NS_MODELS, lrc::api::datatransfer::staticMetaObject, "Datatransfer");
+    QML_REGISTERNAMESPACE(NS_MODELS, lrc::api::interaction::staticMetaObject, "Interaction");
+    QML_REGISTERNAMESPACE(NS_MODELS, lrc::api::video::staticMetaObject, "Video");
+    QML_REGISTERNAMESPACE(NS_MODELS, lrc::api::profile::staticMetaObject, "Profile");
 
     // Same as QML_REGISTERUNCREATABLE but omit the namespace in Qml
     QML_REGISTERUNCREATABLE_IN_NAMESPACE(NewAccountModel, lrc::api);
diff --git a/src/qmlregister.h b/src/qmlregister.h
index a77d6bcb97c0410337a686e1fcaaeac2b887e45e..896a2dc2f7ad5493ad60d896213de39de414dc44 100644
--- a/src/qmlregister.h
+++ b/src/qmlregister.h
@@ -1,4 +1,4 @@
-/*!
+/*
  * Copyright (C) 2020 by Savoir-faire Linux
  * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
  *
@@ -30,6 +30,13 @@
 #define VER_MAJ      1
 #define VER_MIN      0
 
+// Hack for QtCreator autocomplete (part 1)
+// https://bugreports.qt.io/browse/QTCREATORBUG-20569
+namespace dummy {
+Q_NAMESPACE
+Q_CLASSINFO("RegisterEnumClassesUnscoped", "false")
+} // namespace dummy
+
 // clang-format off
 #define QML_REGISTERSINGLETONTYPE_POBJECT(NS, I, N) \
     QQmlEngine::setObjectOwnership(I, QQmlEngine::CppOwnership); \