[Interest] How to set a non-global context property for a single QQmlComponent?

Richard Weickelt richard at weickelt.de
Thu Jul 18 11:42:00 CEST 2019



On Wednesday, 17 July 2019, Patrick Stinson wrote:
> Right, I did try that one but if I remember right I got an error setting the context property, or that it was the same as the engine root context.

I would expect that QQmlEngine::contextForObject() as well as qmlContext() returns a private read-only context, even if there is a writeable context further up in the hierarchy. You could try to call parentContext() to get the writeable context of the component (usually a child of the engine's root context. See https://bugreports.qt.io/plugins/servlet/mobile#issue/QTBUG-69075 for a bit more information about internal vs global contexts.

Richard

 
> > On Jul 17, 2019, at 3:37 AM, Sérgio Martins <sergio.martins at kdab.com> wrote:
> > 
> >> On 2019-07-17 10:58, Patrick Stinson wrote:
> >> Shoot, you know at first pass it looks like that will work. Wow.
> >> I wonder if this is possible to do with QQuickWidget? Or if not how to
> >> show a component into a QWidget without QQuickWidget?
> > 
> > A colleague of mine offered a workaround:
> > QQmlContext *subContext = QQmlEngine::contextForObject(myQuickWidget.rootObject())
> > 
> > That should be a subContext already, different from the engine->rootContext()
> > 
> > Regards,
> > Sergio
> > 
> >>> On Jul 17, 2019, at 1:35 AM, Sérgio Martins <sergio.martins at kdab.com> wrote:
> >>>> On 2019-07-17 10:15, Patrick Stinson wrote:
> >>>> Hello!
> >>>> Surely there must be a way to set a context property on a single
> >>>> component without having to set it globally on the entire QQmlEngine?
> >>>> Indeed, the QQmlContext documentation is silent on this point.
> >>>> Help??
> >>> Hi,
> >>> You can create a child QQmlContext via this constructor [1], and then pass it to QQmlComponent::create()
> >>> [1] - https://doc.qt.io/qt-5/qqmlcontext.html#QQmlContext-1
> >>> Regards,
> >>> --
> >>> Sérgio Martins | sergio.martins at kdab.com | Senior Software Engineer
> >>> Klarälvdalens Datakonsult AB, a KDAB Group company
> >>> Tel: Sweden (HQ) +46-563-540090, USA +1-866-777-KDAB(5322)
> >>> KDAB - The Qt, C++ and OpenGL Experts
> > 
> > -- 
> > Sérgio Martins | sergio.martins at kdab.com | Senior Software Engineer
> > Klarälvdalens Datakonsult AB, a KDAB Group company
> > Tel: Sweden (HQ) +46-563-540090, USA +1-866-777-KDAB(5322)
> > KDAB - The Qt, C++ and OpenGL Experts
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> https://lists.qt-project.org/listinfo/interest
>


More information about the Interest mailing list