Additionally https://forum.qt.io/topic/54353/solved-access-qml-singleton-object-from-c-code/4 seems also like a viable solution though a syntax where qmlRegisterSingletonType return value is a QObject would be very ease to read / write.
On Fri, Nov 22, 2019 at 6:33 PM Damian Ivanov <damianator...@gmail.com> wrote: > > Hi Dmitriy, > > Well I can't seem to find an easy example but an easy example: > Instantiating a .qml with QQmlComponent::create which is of Window (I > do this for others as well) type > from c++ than I set obj->properties from c++ based on various events. > Creating a singleton class seems like adding 30 lines of code per > object in contrast to setContextProperty() > Something like this would be nice if possible: > QQmlComponent* m_component = new > QQmlComponent(application_engine, "qrc:/Component.qml"); > QObject* m_obj ; > qmlRegisterSingletonType<QObject*>("Component", 1, 0, "Identifier", > [=] > { > m_obj = m_component->create(); > return m_obj; > }); > > On Fri, Nov 22, 2019 at 6:22 PM Dmitriy Purgin <dpur...@gmail.com> wrote: > > > > Hi Damian, > > > > that seems to be an interesting case. Could you provide an example of why > > would you need such a pattern? > > > > Why the other way round -- creating a C++ singleton and exposing it to QML > > -- doesn't work for you? That should be easier and more transparent. > > > > Cheers > > Dmitriy > > > > On Fri, Nov 22, 2019 at 4:50 PM Damian Ivanov <damianator...@gmail.com> > > wrote: > >> > >> How would .qml files that are singletons and instantiated from c++ be used > >> currently I do this and am able to access it from qml and c++ > >> QQmlComponent* component = new QQmlComponent(application_engine, > >> "qrc:/Component.qml"); > >> QObject* obj = component->create(); > >> obj->setParent(this); > >> application_engine->rootContext()->setContextProperty("obj", obj); > >> > >> I don't see this anywhere documented how this could be done using a > >> singleton. > >> If I register it as singleton the application_engine doesn't find it > >> findChild-> > >> Using component->create would create it again since it is already > >> registered as a singleton. > >> > >> Any suggestions? > >> > >> > >> ; > >> > >> On Fri, Nov 22, 2019 at 12:53 PM Kai Uwe Broulik <k...@privat.broulik.de> > >> wrote: > >> > > >> > Hi, > >> > > >> > > these are the notes on the QtQml session: > >> > > >> > > Versioning > >> > > ---------- > >> > > > >> > > Once we get rid of unqualified lookups we don't need any QML > >> > versioning > >> > > anymore. At least the minor version will become optional already in > >> > 5.15 > >> > > for well-behaved QML documents. In QML 3 it won't be allowed. > >> > > >> > While I agree with this overall, there's still one caveat which I > >> > haven't seen discussed yet: > >> > > >> > Imagine I have the following code: > >> > > >> > Item { > >> > id: foo > >> > property color prettyColor: "#f0f" > >> > > >> > Rectangle { > >> > color: foo.prettyColor > >> > } > >> > } > >> > > >> > Right now "foo" refers to the Item. What if in a future update, > >> > Rectangle gains a new property "foo". Unless you want to force everyone > >> > to be explicit by using "this" (e.g. width: this.height) everywhere, > >> > which would be annoying, I don't see how this can be made future-proof > >> > without some form of versioning or some other magic solution? > >> > > >> > Cheers > >> > Kai Uwe > >> > _______________________________________________ > >> > Development mailing list > >> > Development@qt-project.org > >> > https://lists.qt-project.org/listinfo/development > >> _______________________________________________ > >> Development mailing list > >> Development@qt-project.org > >> https://lists.qt-project.org/listinfo/development _______________________________________________ Development mailing list Development@qt-project.org https://lists.qt-project.org/listinfo/development