Qt contains a rich set of fundamental enablers, mainly in the Qt Core module. Qt uses these enablers to provide higher-level UI and application development components. The following topics explain the most important enablers and show how to use them to implement specialized functionality not already provided by Qt.
Objects, Properties and Events
The QObject class serves as the main class in Qt's object model and is used as a superclass of a great number of other Qt classes. It provides features such as a meta-object system which allows run-time introspection, manipulation and invocation of properties and methods in the object. It also serves as the basis for Qt's event system, which is a low-level way of communicating between QObject-based objects. Another, more high-level form of communication is provided in Qt's Signals & Slots mechanism. These features can also be used in combination with The State Machine Framework which provides a formally defined and predictable way of managing the states of your application.
A container is a data structure whose instances are collections of other objects. Some examples of containers are: dynamic arrays, queues, linked lists, and associative arrays. Qt provides a set of general purpose, template-based container classes that can be used to store data in memory. See the full list of Container Classes for more details.
Qt uses unicode for the encoding of displayable text strings in order to provide support for all commonly used writing systems in the world. Applications can also be written to support any number of different languages with one code base using Qt's powerful internationalization system.
Qt allows you to write platform-independent code, where the same code base can be compiled for and deployed on different platforms without any changes. In cases where you need to use platform-specific features and integrate with system libraries, Qt also provides solutions for this. Our guide to cross-platform development provides information on writing software on different platforms.
Qt integrates with the windowing system on the target platform using the Qt Platform Abstraction. This is an abstraction of the windowing system which makes porting Qt to new platforms simple and quick. One such system is the Wayland protocol. Qt can be used together with Wayland, which e.g. can serve as a light-weight windowing system on embedded hardware to support a multi-process graphical user interface.
The Qt Platform Abstraction uses Qt's plugin system. This system provides APIs to extend Qt in specific areas (such as adding support for new image formats, database drivers, etc.) and also for writing your own extensible Qt applications which support third-party plugins.