Problems with Open-Source Downloads read https://www.qt.io/blog/problem-with-open-source-downloads and https://forum.qt.io/post/638946

[Solved] viewer.engine()->rootContext()->setContextProperty(...) - main.cpp:41: error: C2248: 'QVariant::QVariant' : cannot access private member dec



  • We are trying to pass the following object to .qml
    Brand *tmpBrand = new Brand("45678","Sprite.png","0");

    using
    viewer.engine()->rootContext()->setContextProperty(""brand", &tmpBrand)

    We encounter error "main.cpp:41: error: C2248: 'QVariant::QVariant' : cannot access private member declared in class 'QVariant' " and unable to proceed further.

    However, the following makes us move ahead with no problem
    Brand brand;
    viewer.engine()->rootContext()->setContextProperty("brand", &brand);

    But, the object "brand" does not have required member values. We intend to update the values and use the newly create object using "Brand *tmpBrand"

    Is there any other work around to pass currently updated object to my .qml file for UI presentation.

    Any quick answer helps us in great way.


  • Lifetime Qt Champion

    Hi,

    Looking at the setContextProperty doc, it should rather be something like:

    @
    Brand tmpBrand("45678", "Sprite.png", "0");
    viewer.engine()->rootContext()->setContextProperty(”brand”, QVariant::fromValue(tmpBrand));
    @

    Otherwise you would be passing a pointer to a pointer to a Brand object.



  • Thanks. Its working and saved my day.


  • Lifetime Qt Champion

    You're welcome !

    Don't forget to update the thread's title to solved (prepending it) so other forum users will know that a solution has been found :)


Log in to reply