[Development] QPA / QWindow / QPainter

Agocs Laszlo Laszlo.Agocs at digia.com
Mon Mar 10 10:20:14 CET 2014


> > I'm implementing a QPA plugin (now with 5.3 snapshot) and there's something
> > I do not understand: When I use native widgets, every widget creates a
> > QPlatformWindow, but only a toplevel window creates a
> > QPlatformBackingStore, which is the class which delivers the paintDevice
> > implementation.
> > 
> > Question: when a QWidget now creates a QPainter on it, how does my QPA
> > plugin know onto which QWindow it is currently acting, when there's only
> > one paintDevice/one backing store ?

Native child windows will work, yes. There is no difference from the backingstore's point of view. There is one backingstore (and so one instance of your QPlatformBackingStore implementation) per top-level and for each child window, native or non-native, painting happens in the same manner.

As for the painting step, QPA has almost nothing to do with it: you merely provide a QPaintDevice, the rest is up to the widgets. The QPA plugin has no knowledge or interest in what's happening in there. The interesting part is the flush that happens afterwards, and in flush() you will of course know which QWindow is being flushed.

Cheers,
Laszlo




More information about the Development mailing list