Review: “The Book of Qt4 – The Art of Building Qt Applications”
I may not be totally objective with the review as I’m “emotionally involved” with another Qt book, but I tried my best to be as objective as I can and show the things I did and didn’t like when reading the book.
The first thing I did after unpacking the book was to take a look at the back side and see who the author of the book is (I admit, I haven’t heard of Daniel Molkentin before). DM is a core KDE developer active since 2000 and his main focus is on the PIM module of the framework. At the time when this book was being written (2006 that is), KDE edition based on Qt4 was in its very early development stage, so I expected Daniel to have very good overall Qt knowledge but not necessarily very deep into Qt4 details – he was Qt4 beta-tester, but I doubt that means checking every piece of technology under the hood.
The next thing was taking a look at the foreword. There are two — one written by Eirik Chambe-Eng and the other by Matthias Ettrich. Those names speak for themselves and they were very positive about Daniel’s work, so my appetite kept rising. Oh, by the way, Axel Jaeger — one of the QtCentre admins — is mentioned as one of people having some influence on the book which is a plus as well (the site is mentioned by name in the book too).
Going into details
The book starts by explaining basic concepts of Qt, the difference between QObject derived classes and non QObject classes (rookies often think each Qt class is a QObject). Then there comes a really nice chapter explaining Qt Designer in details. This is a very GoodThing for inexperienced users. The only problem I see is that explanation of the layout concept is scattered throughout the book instead of being described here. Instead it’s described in a separate chapter (which is also fine), but also traces of explanations can be seen at the beginning of the book (appropriate sections are even named similar).
Next there are chapters describing different parts of Qt framework. These are pretty standard compared to other Qt books, so I won’t go into details. I’d like to mention things I didn’t like in those chapters though.
First of all there is not a single word about the Graphics View framework. That is strange. At first I thought that the book was completed before the framework became part of Qt (that was the 4.2.0 release), but then I noticed the author of the book mentions Qt 4.2 elsewhere in the book, so that was not it. Graphics View is a major part of Qt and it’s heavily used by people, so I’d expect every book to describe at least the basics of it. This is a big minus.
Next, my favourite Qt subsystem – Interview, the model-view framework. The book nicely describes the very basics of using Interview. Then it tries to go into more advanced topics like implementing your own models. Problems arise when Daniel tries to explain delegates – a very important part of the framework. The section about delegates is only three pages long and describes only one of the least frequent use of the delegate – creating your own editor widget and exchanging data with the model. There is not a single word about the part that concerns painting items or handling events for model indexes. The chapter also lacks anything about manipulating the views themselves (it would complement sections about implementing models and delegates).
On the bright side the book explains topics like graphics compositing and object serialization although it only briefly mentions Qt’s network capabilities and completely ignores the unit testing framework.
I encountered many small mistakes and inconsistencies while reading the book some of which I mentioned in this review. Partially it is probably caused by imprecise translation (I think the book was originally written in German) and partially probably by a running deadline for the book — it looks like parts of the book were cut out.
The book goes through basic topics related to programming using Qt, but ignores some more advanced concepts. Things I lack most are graphics view, unit testing and advanced model-view sections. I’d also like to see some more advanced topics, but lack of these is common among all Qt4 devoted books. But even though the book is not perfect, it is a fountain of knowledge for programmers new to Qt.
I’m waiting for the second edition of the book, I’m sure all those problems will be corrected and we will have a very nice book to learn from.
If you do or don’t agree with the review, please leave your comment.