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 ca n hel p. Qt is a compre he nsi ve, hi gh- qualit y fra me wor k f or 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++.