On May 10th, ICS presented a Qt Developer
Conference in Waltham, Massachusetts. Over 100 developers were on hand to
hear presentations from Havaard Nord (TrollTech CEO), Jasmin Blanchette
(TrollTech uber-developer) and Matthias Kalle Dalheimer (Klarälvdalens
It was a somewhat uneven conference. There were some great technical
talks and then there were some that were too high-level and slow moving.
Jasmin Blanchette did not have enough time for his talk on Qt 4, causing him
to rush and leaving little time for Q&A. Havaard Nord's talk on the soul of Qt was inspiring and included some interesting results from a
recent customer survey. A low point was probably the talk on GUI design, which
really had nothing specific to Qt. This time would have been better spent
having Matthias Kalle Dalheimer demonstrate KD Executor, which was very
popular during the breaks. Joe Longson (from Walt Disney) demonstrated an
amazing Qt application that Disney uses to manage production of animated
feature films. Gregory Seidman's talk on using a app-global relay object
(publish/subscribe pattern) to centralize connecting signals and slots was
As of this writing, I could not find an online version of the speakers'
slides, but I believe ICS intends to post
TrollTech Customer Survey. Havaard Nord's presentation included data
from a March 2004 customer survey. The survey was sent to 6,000 licensees and
had a 25% response rate. Some of the results:
- The most commonly used modules is threading (50% of responses). So we
can expect TrollTech to focus on threading module.
- GNU/Linux and Mac OSX are growing fast (see table below).
- Only 31% of respondents have participated in an Open Source project. (2%
didn't know if they had or not! :)
- 97% would recommend Qt to others
Licensees where asked what OS they are targeting now and what OS they are planning to target. While this table is based on the 1,250 responses TrollTech got, it is not
clear if all 1,250 responses answered this question, nor was any attempt made
to quantify the customer base of each respondent. So take these results with
a grain of salt.
Qt 4.0 An article in the recent
issue of the Qt Quarterly has a list of the changes coming in Qt 4 (pronounced
"cute four"). TrollTech developer Jasmin Blanchette, co-author of the recent
TrollTech/Prentice Hall Qt book, gave a great talk on Qt 4. Some things that
stuck out for me from the talk:
- MVC. The list, tree and table views have been refactored
to use a model-view-controller pattern. The model data structure (a tree
where each leaf has columns) is the same for all views, so your data can be viewed with a 1D list,
2D table, or 3D tree. The API is now consistent across all three.
- Threading. Signals and slots now work across threads. Container
reference counting is now thread-safe, so you no longer need to use QDeepCopy.
- Containers. All containers (for example, QList, QLinkedList,
QVector, etc.) are now value based. QList is the container of choice in most
cases. But use an integer to scan the list, as iterators are not guaranteed
to be valid if you change a list while interating over it's contents.
- Performance. A lot of work was done reducing memory allocation to
improve performance. QStrings and QByteArray used to require two mallocs for
each instantiation. They now require one. QList is now much smarter about
mallocs; for example, if you are working with a list of pointers, it does not
allocate a pointer to the pointer, it uses the existing pointer. Another area
where mallocs were reduced is in the object hierarchy. In Qt 3, if there were
three parent classes to the object you instantiated, four mallocs
occurred--one for each class in the hierarchy. Now there is just one. These
changes (particularly the QString change) result in huge differences; for
example, the memory allocated at Qt Designer start-up was reduced by 46%!
Designer now starts almost twice as fast in Qt 4 as it did in Qt 3.
A alpha / developer-preview release of Qt 4 is planned for May or June of