| Classes - Annotated - Tree - Functions - Home - Structure

# Qt Object Model

The standard C++ Object Model provides very efficient runtime support of the object paradigm. On the negative side, its static nature shows inflexibility in certain problem domains. Graphical User Interface programming is one example that requires both runtime efficiency and a high level of flexibility. Qt provides this, by combining the speed of C++ with the flexibility of the Qt Object Model.

In addition to C++, Qt provides

- a very powerful mechanism for seamless object communication dubbed signals and slots,
- queryable and designable object properties,
- powerful events and event filters,
- scoped string translation for internationalization,
- sophisticated interval driven timers that make it possible to elegantly integrate many tasks in an event-driven GUI.
- hierarchical and queryable object trees that organize object ownership in a natural way.
- guarded pointers, QGuardedPtr, that are automatically set to null when the referenced object is destroyed, unlike normal C++ pointers which become "dangling pointers" in that case.

Many of these Qt features are implemented with standard C++ techniques, based on inheritance from QObject. Others, like the object communication mechanism and the dynamic property system, require the Meta Object System provided by Qt's own Meta Object Compiler (moc). Think of the Meta Object System as a C++ extension that makes the language better suited for true component GUI programming.