[Development] QTCS2019 Notes from QtQml session

Damian Ivanov damianatorrpm at gmail.com
Fri Nov 22 17:33:27 CET 2019


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 <dpurgin at 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 <damianatorrpm at 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 <kde at 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 at qt-project.org
>> > https://lists.qt-project.org/listinfo/development
>> _______________________________________________
>> Development mailing list
>> Development at qt-project.org
>> https://lists.qt-project.org/listinfo/development


More information about the Development mailing list