Last week in Qt development (week 27 2012)
This post is part of an ongoing series about developments and discussions in Qt.
Some parts of this report are still under discussion, and don’t necessarily reflect the final state of Qt 5. The target audience is people involved in Qt development itself, but without the time to follow everything that happens, and others with a strong interest in Qt, Qt 5, and the community.
This week we cover new QPA and Mac integration, faster copying of shared classes in Qt and improvements to the CMake and C++11 features in Qt 5.
Platform API for system tray icons
KDAB engineers added a new QPA API for platform specific integration with the system tray. This fixes one of the critical remaining open issues in Qt 5, and will allow other custom platform plugins to easily add support for system tray icons.
Greater Mac platform integration
Also as part of KDAB’s work on improving the Mac platform support, our engineers added new implementations of Mac API specific drags, and UI integration in the form of fading scrollbars. This is an example of how the QPA API can grow to enable greater platform integration for Qt applications and Qt in general.
Adding member swap to shared classes
Many existing classes in Qt have had swap members added. This makes it possible to effectively use the copy-swap idiom in affected classes, which is done internally in Qt. This is part of the work KDAB engineer Marc Mutz has been doing across Qt in time for the release of Qt 5.
Internal headers in QtTest headers
Some private Qt headers are currently needed by public headers of the QtTest module.
For users of qmake, there is a workaround for this issue, but for users of CMake and other buildsystems, there is currently a need to use private QtGui headers with all unit tests which use the QtGui and QtWidgets modules.
It is not clear whether this will remain the case until Qt 5.0 is released.
Improvements in tests for CMake Qt integration
The CMake files shipping with Qt which allow the use of Qt 5 with CMake buildsystems got some improvements in its test infrastructure. Existing unit tests are being generalized so that the continuous integration infrastructure can ensure that they continue to work. The goal is to have tests for using CMake with each module which ships with Qt 5.
Concurrently, the ongoing maintenance work going into Qt4 CMake files is being forward ported to Qt 5. This work on infrastructure for CMake buildsystems for Qt 5 is maintained by KDAB.
More C++11 keyword support in metatype system
A patch adds the constexpr keyword to the qMetaTypeId method. This makes it possible to use replace all uses of the QMetaType::Type enum with the appropriate qMetaTypeId call instead, which may be better for consistency.
Awesome work!
I’m curious about the Lion scrollbar support, do the scrollbars also reappear when the user plugs-in a USB mouse? That’s one of the neat tricks they turned out to have 🙂
(trackpad = no scrollbars, usb mouse = visible scrollbars)
Diederik: Yes, that’s the case. The style honours the scroll bar setting made in the system settings as well.
Wow, great job on the Lion scrollbars! That feature is a must have to look native on OS X. Now if only we could have kinetic scrolling on QScrollAreas…
Might there be problems with implementing things that Apple has patented? http://worldwide.espacenet.com/publicationDetails/biblio?DB=worldwide.espacenet.com&II=0&ND=3&adjacent=true&locale=en_EP&FT=D&date=20120628&CC=US&NR=2012162119A1&KC=A1
I don’t know, but it’s not relevant to this blog anyway.