[Development] Foreign windows, embedding and transiency

Sorvig Morten Morten.Sorvig at digia.com
Tue Dec 11 12:47:36 CET 2012


On Dec 11, 2012, at 12:33 PM, Samuel Rødal <samuel.rodal at digia.com>
 wrote:
>> 
>> In order to create a QWindow for a foreign window, there might be a
>> special subclass of QWindow (QForeignWindow?) or maybe it could just be
>> a QWindow with a special Qt::ForeignWindow flag (and maybe a constructor
>> like QWindow::QWindow(WinId foreignWindow)).
>> 
>> Your opinions on which way foreign windows could be created (and on
>> whether all of this sounds like a good idea to you) are very welcome. :-)
> 
> This worked for QWidgets in Qt 4 by passing a native window handle (WId) 
> to create(). However, then we also knew at compile time what the native 
> windowing system would be.
> 
> Is it possible to define a WId type that will work on X11, Wayland, and 
> any other theoretical windowing system on Unix platforms?


I've been planning this a bit from he perspective if the Cocoa port, here's what I think I need:

- A Qt::WindowFlags flag ("Qt::NativeWindow")
- An basic API for setting the native window*, for example a function exported by QPlatformNativeInterface.
- Nice API in QtMacExtras 
- The implementation itself in the cocoa plugin.

I don't think we should create QWindow subclass. We could add a constructor instead of using QPlatformNativeInterface, and then we would perhaps not need a flag either.

Morten

* which would be a NSView, not a NSWindow. QWindow handles both the top-level and non-top-level case, Cocoa has separate classes.




More information about the Development mailing list