Jump to content

Meta-object System

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 82.69.159.150 (talk) at 11:37, 18 November 2015 (Architecture). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Meta Object System is a part of Qt framework core provided to support Qt extensions to C++ like signals/slots for inter-object communication, run-time type information, and the dynamic property system.[1]

Architecture

Meta object system consist 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 at last moc is a preprocessor that changes Q_OBJECT macro instances to C++ source code to enable meta object system mechanism in the class it is used.[2]

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.[3] There are some efforts to make Qt needless of a preprocessor. These efforts include re-implementing Qt moc using libclang.[4]

References

  1. ^ "The Meta-Object System - QtCore 5.1". Qt Project. 2013-07-04. Retrieved 2013-07-04.
  2. ^ "Using the Meta-Object Compiler (moc)". Qt Project. 2013-07-04. Retrieved 2013-07-04.
  3. ^ "Why Does Qt Use Moc for Signals and Slots?". Qt Project. 2013-07-04. Retrieved 2013-07-04.
  4. ^ "Re-implementing Qt moc using libclang". Olivier Goffart. 2013-07-04. Retrieved 2013-07-04.