Phil's notes from the Qt Developer Days conference (11-29-2011 to 12-01-2011), San Francisco
http://qt.nokia.com/qtdevdays2011
Tuesday |
- Programming with Qt Quick / QML
|
Wednesday |
- Keynotes: Nokia Strategy / Ubuntu / Qt 5 Roadmap
- Development of Multi-threaded applications
- Qt Quick Components for Desktop
- The last mile - Effective Debugging and Profiling for Qt and Qt Quick
- Into to Qt SDK / Qt Creator and cross-platform development
|
Thursday |
- Choosing your UI weapon: C++ vs. QML vs. HTML5
- Using Qt Quick for Rapid UI Prototyping and Development
- Persistent Object Storage for Qt Quick
- HTML5 in QWebKit
- Graphics Performance - Best Practices
|
Qt Quick / QML
- Qt Quick for "liquid GUIs", touch devices.
- QML looks like CSS (it's declarative), and uses JavaScript for binding and specialization.
- For desktop development, use the "Qt Components for Desktop" module. Very preliminary, but already in use by developers.
- Surprisingly little QML code was necessary to nicely implement basic widgets.
- "Unsupported Research", but usable in Qt 4.7
- Qt Quick has a better formulation of "QAbstractItemModel" -- based on providing application data rather than display properties (e.g. alignment).
- Qt Quick with C++ development uses just a little JavaScript for the GUI glue. Supports Signal / Slot connections.
- Qt4 and Qt5 have different integration technologies for Qt Quick. Qt4 uses a QDeclarativeView, based on the Graphics View framework. Qt5 uses instead an efficient implementation of OpenGL. Mixed application development not recommended at this time, at least until Qt5 is more mature.
Qt5
- Qt widgets are completely supported (i.e. no need to port to QML / Qt Quick / OpenGL / JavaScript).
- Qt Quick WILL also be positioned for desktop development.
- Porting script: fixqt4headers, will do most of the work to port from Qt4.
- Qt Creator will work well for widget-based development
- [Question response]: QDom will move out of the Qt standard libraries, but will be available as an optional module, and is expected to be picked up by the Qt Project.
- Beta: March/April 2012
- Release: 1st half of 2012.
Qt5 will support Linux/Wayland as an alternative to Linux/X11.
- Linux/Wayland will be one of the "reference platforms" for Qt5 (including also Windows, Mac OS X, and Linux/X11).
- Also, Ubuntu (Linux) is planning on working on the "graphics stack" for Wayland
Development of Multi-threaded applications
- Before using QMutex's for fine-grained contention, look at the QAtomic API as a "lock-free" alternative.
- QConcurrent is not really recommended.
- QMutex will be cheaper in Qt5 (than it had been in Qt4) in non-contention scenarios.
Qt Versions
- 4.7: Qt Creator; Qt Quick 1.0; Significant Webkit; HTML 5
- 4.8: Peformance & Quality improvements (incl. file access); Specific widget improvements; New Webkit 2.2 (HTML 5); Qt Quick 1.1.
- Continued Developement: into 2012
- Standard Support:: into 2014
- Extended Support (necessary patch releases): beyone 2014.
- 5.0: Qt Quick 2.0; Qt widgets officially supported; C++ widgets will not require OpenGL.
Qt Commercial by Digia
- Significant quality control efforts in the commercial distribution. ("Bamboo" build and test system).
- Some Digia widget development / "Qt Commercial Add-ons" in Qt5 will be available to only commercial developers.
- charting, data visualization
- "cloud"
- printing & PDF.
- [In conversation: this needs to be confirmed]: There may be no going back to Qt Commercial once RiverWare has been released under LGPL.
- 4.8 priority: error correction and performance improvements (earlier availability than the open distribution); Better Visual Studio integration.
Debugging
- qDebug(), qWarning(), QFatal(), of course.
- Breakpoint for these outputs: qt_message_output().
- Best if QObjects are assigned an object name.
- QObject::dumpObjectInfo()
- Visual Studio Qt Integration Plugin: http://developer.qt.nokia.com/wiki/QtVSAddin
- Abstract Item Model Test: http://developer.qt.nokia.com/wiki/Model_Test
- Environment variables: Q_FUNC_INFO, QT_FATAL_WARNINGS
- ... QT_FLUSH_PAINT [_EVENT], QT_FLUSH_UPDATE
... highlights repainted area, useful for debugging paint performance
- QT_DEBUG_PLUGINS ("why isn't it loading my SQL driver?")
- ... Unix: LD_DEBUG
- Valgrind Suite (LOTS OF STUFF): But Linux and Mac only.
- GammaRay test suite for Qt Creator: https://github.com/KDAB/GammaRay
Misc Notes:
- Qt Creator (IDE in the Qt SDK) looks very good.