私は一種のシングルトンヘルパーオブジェクトを持っていますが、スタック/ヒープに物を置くことを好むので、実際にはシングルトンになりたくありません。そのため、ヒープ上に作成し、ルート QQmlContext の contextProperty として設定しました。また、QQmlContext のオブジェクト ツリー内でインスタンス化される C++ の QObject サブクラスもあります。
QObject が含まれている QQmlContext に C++ からアクセスして、問題の contextProperty にアクセスできますか?
私はこのようなことができることを知っています:
// in main.cpp
engine.rootContext()->setContextProperty("_cp", cp);
// in foo.qml
MyQObjectSubclass {
cp: _cp
}
// in myqobjectsubclass.h:
// (macro from http://syncor.blogspot.bg/2014/11/qt-auto-property.html)
AUTO_PROPERTY(MyQObjectSubclass*, cp)
しかし、それは常に MyQObjectSubclass QML インスタンスを "cp: _cp" ボイラープレートで詰まらせなければならないことを意味します。