The Qt Meta Object Compiler, which takes a C++ header file and produces a C++ source file to be compiled and linked into the Qt-using program. The information contained in the generated source file is part of the Qt implementation of RTTI, properties and a signal/slot mechanism. All of this could be done - if in a less-than-perfect way - in other ways which don't require this complicated system.

This mechanism is the reason some programmers do not use Qt - as this pre-processing stage means that Qt programs cannot be written in standards-compliant C++. Also, moc does not fully understand features such as templates, virtual inheritance, pre-processor directives and nested classes, meaning workarounds are required.