Hi,

Qt 5 aims to be 98% source compatible with Qt 4. Still, changes has been made 
to the platform implementation and infrastructure. Not all have been discussed 
here, so I figured I'd give a brief rundown.

The main issue that everyone should be aware of is that all Qt 5 platform ports 
are to a large degree rewrites. This means new code. If you find something that 
is missing it is far more likely that we simply forgot about it rather than it 
being a part some twisted scheme to break your application.

Now, on the changes where we actually _are_ breaking your application:

* 64bit clang is the default compiler. 
32-bit builds are also supported trough the macx-clang-32 and macx-g++-32 
mkspecs.

* No Carbon version
These code paths have been removed. (Some parts of Qt still link against the 
Carbon framework; this is not a bug)

* 10.6 is the minimal supported version, with some limitations:
- Webkit support for 10.6 is problematic. I'm told that we (Qt) are by now the 
only ones interested in keeping it running on this platform. For 5.0 webkit 
will work if you compile Qt with the 10.6 SDK, but it's not clear how long we 
can sustain that.
- The Qt binary package is compiled against the 10.7 SDK, which means it won't 
run on 10.6 due to the webkit issue.
- This makes 10.6 is a deployment platform only, similar to what we did for 
10.3 (I think) way back.
- You can still build from Qt source on 10.6 and develop using that.

* Raster is the default paint engine for QPainter
CoreGraphics has been retired in favor of the cross-platform raster paint 
engine. This means way less Mac-specific QPainter bugs and equal performance 
characteristics on all platforms. Printing still use CoreGraphics (we need to 
produce vector output).

* High-dpi support
Qt 5 includes basic support for high-dpi for "retina" displays. This is enabled 
by default and applications will automatically get high-dpi Mac style, QPainter 
vector graphics, and Qt Quick (2).

* (No) Universal binary support
The Qt build system has been simplified/unified across platforms and we have 
removed the "universal" build support where you could produce combined 
32/64-bit binaries. Our rationale is as follows:
- PPC support has been removed.
- 10.6 requires a machine that can run 64-bit apps, with the minor exception 
the early 2006 Intel Core Solo/Duo iMacs and MacBooks which lacks 64-bit 
support.
- This means you can produce either a 32-bit binary or a 64-bit binary which 
runs on (nearly) all supported systems.
- You can still use the lipo tool if you do want to create an universal app.

* Qt Binary installers
The Qt binary installers have been changed to use a cross-platform installer 
framework. Qt will now be installed into one location, instead of being spread 
out in /Devloper, /Library/Frameworks etc. We are aware that his is different 
than what it used to be, but I think it will work well in practice. I would 
also like to discourage global Qt installs and instead suggest an approach 
based on developer builds and self-contained app bundles. (see deployment)

* The unified toolbar
We are removing the existing solution, which was hard to maintain and gave a 
close-but-not-quite native look and feel. This means that calling 
QMainWindow::setUnifiedTitleAndToolBarOnMac will have no effect on Qt 5. 

The replacement (QtMacUnifiedToolBar) is based on NSToolBar which gives us 
perfect native look and feel. QtMacUnifiedToolBar is a part of QtMacExtras

* QtMacExtras
Will host many/all of the mac-spesific APIs found in Qt 4. Available at 
http://qt.gitorious.org/qtplayground/qtmacextras .

* App store and sandboxing
We have made modifications to Qt to make it work with the Mac App store 
sandbox. There are Qt apps on the Mac App store, but we don't have a good "This 
is how you deploy Qt apps to the store" tutorial at this point. 

* Deployment
There are many ways to deploy a Qt application and if you have a big 
application you are probably writing your own deployment scripts. Biggest 
change from Qt 4 is that Cocoa platform plugins needs to be deployed. 
(qtbase/plugins/platforms/libqcocoa.dylib). The macdeployqt deployment utility  
has been update to handle the cocoa platform plugin (and other plugins).

That was all for now :)

Morten




_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to