-
Notifications
You must be signed in to change notification settings - Fork 1
/
SingletonHelper.h
28 lines (25 loc) · 1.94 KB
/
SingletonHelper.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#pragma once
#include <qqml.h>
#include <QJSEngine>
#include <QObject>
#include <QQmlEngine>
#define QML_SINGLETON_IMPL(CLASS) \
public: \
static CLASS& instance() { \
static CLASS ret; \
return ret; \
} \
static QObject* qmlSingletonFactory(QQmlEngine* qmlEngine, QJSEngine* jsEngine) { \
Q_UNUSED(jsEngine) \
Q_UNUSED(qmlEngine) \
QObject* ret = &instance(); \
QQmlEngine::setObjectOwnership(ret, QQmlEngine::CppOwnership); \
return ret; \
} \
static void registerQmlModule(const char* uri, const int majorVersion, const int minorVersion, const char* name) { \
qmlRegisterSingletonType<CLASS>(uri, majorVersion, minorVersion, name, &CLASS::qmlSingletonFactory); \
}
class _test_QmlSingleton_ : public QObject {
Q_OBJECT
QML_SINGLETON_IMPL(_test_QmlSingleton_)
};