12. moc
• Meta
Object
Compiler
• Генерация
дополнительного
кода
перед
сборкой
проекта
13. moc
• Meta
Object
Compiler
• Генерация
дополнительного
кода
перед
сборкой
проекта
• Обрабатываются
все
хедеры,
указанные
в
headers
секции
14. moc
• Meta
Object
Compiler
• Генерация
дополнительного
кода
перед
сборкой
проекта
• Обрабатываются
все
хедеры,
указанные
в
headers
секции
• Для
каждого
создается
файл
moc_myclass.cpp
15. moc
• Meta
Object
Compiler
• Генерация
дополнительного
кода
перед
сборкой
проекта
• Обрабатываются
все
хедеры,
указанные
в
headers
секции
• Для
каждого
создается
файл
moc_myclass.cpp
• Чтобы
корректно
работали
классы
из
.cpp
файлов
–
надо
в
конце
.cpp
файла
подключить
myclass.moc
33. QMetaObject
• Имя
класса
• Методы
• Свойства
• Енамы
(в
том
числе
строковые
представления
значений)
34. QMetaObject
• Имя
класса
• Методы
• Свойства
• Енамы
(в
том
числе
строковые
представления
значений)
• Создание
новых
объектов
35. QMetaObject
• Имя
класса
• Методы
• Свойства
• Енамы
(в
том
числе
строковые
представления
значений)
• Создание
новых
объектов
• Вызов
методов
36. QMetaObject
• Имя
класса
• Методы
• Свойства
• Енамы
(в
том
числе
строковые
представления
значений)
• Создание
новых
объектов
• Вызов
методов
• Преобразование
типов
(qobject_cast)
39. Проблемы
• Лишний
шаг
компиляции
• Отсутствие
возможности
использования
дефайнов
40. Проблемы
• Лишний
шаг
компиляции
• Отсутствие
возможности
использования
дефайнов
• moc
не
поддерживает
шаблонные
классы
41. Проблемы
• Лишний
шаг
компиляции
• Отсутствие
возможности
использования
дефайнов
• moc
не
поддерживает
шаблонные
классы
• signals
и
slots
не
входят
в
стандартные
слова
C++
42. Проблемы
• Лишний
шаг
компиляции
• Отсутствие
возможности
использования
дефайнов
• moc
не
поддерживает
шаблонные
классы
• signals
и
slots
не
входят
в
стандартные
слова
C++
• Мелкие
стилистические
проблемы:
– Полное
название
енамов
– Обертывание
указателей
на
функции
в
тайпдеф
– …