[Interest] My experience porting to Qt5 (on OS X)

morten.sorvig at nokia.com morten.sorvig at nokia.com
Mon Sep 3 12:18:46 CEST 2012


On Sep 2, 2012, at 1:38 PM, ext Till Oliver Knoll <till.oliver.knoll at gmail.com> wrote:

> Hi,
> 

Hi! Thanks for testing. Commenting on some of the issues below:

> 
> GOOD:
> 
> - "Lion Fullscreen" is now supported out of the box (so I can get rid of 
> my native API hacking :)) However it seems that the "fullscreen" option 
> is added to every main window by default. Not sure whether I really want 
> this (should be a window configuration flag maybe - or maybe that's 
> already present as an option?)

We should probably add a flag, and find a way to fit the tree options (on, off, auto) into Qt::WindowFlags..

> 
> BAD:

> - Lots of rendering artifacts (mostly seems like a "refresh" problem: 
> old pixel "blocks" remain on the screen until a repaint is enforced, 
> e.g. by rescaling the window - can also be observed with the Qt 5 
> Designer etc.)

This is unexpected, we've been running for example Qt Creator on Qt 5 artifact-free. As you note elsewhere it could be a 10.6 issue.

> 
> - setUnifiedTitleAndToolBarOnMac(true) doesn't seem to have an effect 
> anymore:
> 
>   THIS IS AN ABSOLUTE SHOW-STOPPER ON MAC!

I don't want to bring setUnifiedTitleAndToolBarOnMac forward to Qt 5. There are two reasons for this:

- It's a horrible hack. In Qt 4 we move the toolbar out of it's containing main window, embed it in an external NSView, and then #ifdef all the layout code to account for the missing toolbar. 

- It emulates a native toolbar. This gives you something that looks similar, but behaves slightly different.

Instead, I see two possible replacements: 

- Wrap NSToolBar in a QAction-based API. This gives you access to the real NSToolBar, with perfect native look-and-feel (Including the customisation menu). The downside is that you have to play by the NSToolBar rules. Research work on this option is underway, see http://qt.gitorious.org/qtplayground/qtmacextras.

- Expand QWindow to cover the toolbar/titlebar area. Qt would then be free to draw the toolbar is it likes. Chrome does something like this to implement tabs-on-top, so it's not completely unprecedented. 

Morten


More information about the Interest mailing list