На этом шаге рассмотрим метаобъектный компилятор MOC.
Метаобъектный компилятор (MOC, Meta Object Compiler) является препроцессором, который исполняется в ходе компиляции приложения, создавая, в соответствии с определением класса, дополнительный код на языке C++. Это происходит из-за того, что определение сигналов и слотов в исходном коде программы недостаточно для компиляции. Сигнально-слотовый код должен быть преобразован в код, понятный для компилятора C++. Код сохраняется в файле с прототипом имени moc_<filename>.cpp.
При работаете с файлами проекта управление MOC автоматизировано. Для создания moc-файла "вручную" можно воспользоваться следующей командой:
moc –o proc.moc proc.h
После ее исполнения MOC создаст дополнительный файл proc.moc. Для каждого класса, унаследованного от QObject, MOC предоставляет объект класса, унаследованного от QMetaObject. Объект этого класса содержит информацию о структуре объекта, например сигнально-слотовые соединения, имя класса и структуру наследования.
На следующем шаге рассмотрим компилятор ресурсов RCC.