Foreword

[ fromfile: foreword.xml id: foreword ]

 

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 UI 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 importantly, ways to create graphical user interfaces.

When I did my first bits of coding in C++, I was using Qt. Qt made it rather easy for me to get started on my first projects and made it rather 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 of my work from other languages to using Qt and C++.

Qt has always had a focus on trying to provide 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 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.

In order to become a good novelist, one must first read many good novels. In order 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.

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 IDE (integrated development environment), 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 and will one day be able to contribute to KDE or one of the many other open source projects using Qt. Maybe you will be able to 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, and 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 Qt Research and Development


[1] GNU Lesser General Public License