Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
I still remember how I first got to know C++ and Qt. It was around 15 years ago while working on my diploma thesis. Most of the development we did at that time was done in Fortran and C. I was working on a Linux system with FVWM as a window manager. One day I read an article about KDE—a cool, new open source project to create a desktop environment for Linux. Being not really happy with the user interface that Linux had to offer, I went to download, compile, and install the package.
KDE used Qt as the underlying framework. After some time as a user, I started contributing to the KDE project. Although I had studied object-oriented programming at university, it was only when I started developing for KDE with Qt that I really learned and understood many of the concepts.
C++ as a programming language is in some ways incomplete. Most other languages such as Java, Python, or C# come with a rather complete set of frameworks. The scope of the C++ standard library is, however, limited to low-level functionality, containers, and algorithms.
Combining a powerful and complex language such as C++ with a standard library that is limited in scope but makes extensive use of all the advanced features of C++ creates an extremely steep learning curve for developers who want to start developing in C++.
This is where Qt can help. Qt is a comprehensive, high-quality framework for professional application development. It covers most of the functionality that is missing from the standard library, such as threading, Unicode support, XML handling, and most important, ways to create graphical user interfaces (GUIs).
When I did my first bits of coding in C++, I was using Qt. Qt made it easy for me to start on my first projects and made it easy to learn new concepts of the C++ language while developing real applications. It was actually a lot of fun to work with Qt, so I soon migrated all my work from other languages to using Qt and C++.
Qt has always focused on trying to provide an intuitive and easy-to-use API set. The focus of the framework has always been on helping application developers to get their work done. This focus has, however, often led to rather clean implementations of certain design patterns. The signal/slot mechanism, for example, makes object-oriented programming extremely easy and intuitive.
This book tries to teach C++ and Qt together. With Qt, creating visible results is easy, usually only requiring a few lines of code. This helps overcome the complexity of C++ as a language, makes learning it more enjoyable, and motivates students to continue learning.
To become a good novelist, one must first read many good novels. To become a good composer, one must first listen to good music. The same thing applies to software developers. Working with an expertly designed library is important to becoming a good software developer. Having the source code for this library available helps developers understand many details, and it can be a place to find inspiration and maybe even solutions to some problems. Qt being LGPL[1] licensed makes this source code available to everybody.
[1] GNU Lesser General Public License
Every C++ student should learn the language in conjunction with Qt. This book is committed to bringing this synergy to students. Qt users tend to be passionate about the framework, and Paul and Alan Ezust are no exception. This second edition of their book covers even more Qt technologies with more screenshots of the developed applications.
Learning application development has never been easier than it is today. Qt comes in an all-encompassing and integrated free package that provides an integrated development environment (IDE), a compiler, a debugger, the Qt library, tools, and documentation with tons of examples and demos.
Previously, many emerging software developers got stuck along the way because there was no proper guidance or the result of the hard coding work was not rewarding enough. With Qt you can create more with less coding. Bringing your software onto another platform like a mobile phone, embedded hardware, Mac, Windows, Linux desktop, and others is only a recompile away. The people who build Qt do everything possible to make developers’ lives as easy as possible. Alan and Paul’s book can give you, the developer, the guidance you need.
We hope that you enjoy the journey to becoming a C++ developer [who can] one day contribute to KDE or one of the many other open source projects using Qt. Maybe you can write Qt software for a living, as many thousands of developers do today. The opportunity is there—the number of jobs for skilled Qt engineers is increasing every year.
This text is not only for those new to C++ and Qt. Experienced software developers can also obtain much value from the many surprising new ideas contained in Paul and Alan’s work. The book also serves as a good lookup resource due to the large index.
Today Qt development takes place in the open with both Qt’s own engineers and the large community of contributors working on the same code repository. We hope one day you will contribute code to Qt or add to the Qt ecosystem in another way as Paul and Alan have done with this excellent new book.
— Lars Knoll
Director of Qt Research and Development