You're a good C++ programmer; you're confident about when to use STL, and you know when its complexity outweighs the benefits it brings. The source code you write ports flawlessly between operating systems, and your threads are careful to tend to only their own knitting.
There's one blank spot on your résumé, though: You've written only a few graphical user interfaces (GUIs), and never with C++. You're wary about event-oriented programming, and don't know whether widgets, window managers, and themes are different things; different kinds of things; or even have anything to do with each other.
You need a few words of advicejust a quick crib sheet, really, to get you on course. You won't be the architect for your employer's next GUI application and its quarter-of-a-million-dollar budget, but you do want to understand clearly what the lead designer is deciding.
Let me introduce you personally to the leading GUI toolkits for C++.
Toolkit is one of the words that GUI specialists use for their favorite libraries. When a GUI-fied application displays a "Push me" button on the screen, it's unlikely that the programmer painted that button at that position, pixel by pixel; in almost all cases, he or she simply invoked a standard button-creation function from a large library, and then decorated the button with specific refinements such as displayed text, background and foreground colors, position on the screen and/or in relation to other objects, and so on.
Such libraries are certain to know about not just buttons, but list boxes, menus, and a variety of other widgets (displayable items). A third near-synonym for GUI library or toolkit is widget set. For the most part, this introduction uses the term toolkit.
Glossary help isn't the only reason that it's good to have a friend along the first time you meet the different toolkits. Some areas of computing are sufficiently mature (or at least settled) that the only real issues left are subjective. For example, all the leading web browsers provide roughly the same functionality and are equally usable over a broad range. In such cases, it's reasonable to try out a few candidates and see whether one has a style that makes a good (or bad) first impression.
Unlike web browsers, strategic choices of database management system or GUI toolkit embody profoundly different technical choices that are not apparent without deep experience or a great deal of background information. The job of this introduction is to specify the toolkits to you so that you not only know their names, but also a few of their essential characteristics. The focus is on important technical differentiators that are hard to spot at a casual glance.