The Meta object system consists of 3 things: QObject
class, Q_OBJECT
macro and a tool called moc (Meta-Object
Compiler). QObject is the base class for all Qt classes, Q_OBJECT macro is used to enable meta-object features in classes and finally moc is a
preprocessor that changes Q_OBJECT macro instances to
C++ source code to enable meta object system mechanism in the class in which it is used. Using the meta object system has brought some criticism. In
Qt documentation, several reasons have been given for the use of the meta object system, including benefits of
code generation, dynamism of
GUIs, automatic binding to scripting languages, not adding limitations and also reasonable performance in signal/slot implementation with moc. There are some efforts to make Qt needless of a preprocessor. These efforts include re-implementing Qt moc using libclang. == References ==