Post on 18-Jul-2015
Все, что мы так любим
• Сигнал-‐слоты • Q_PROPERTY • Связь C++ и QML • invokeMethod • QVariant • Работа с БД
Все, что мы так любим
• Сигнал-‐слоты • Q_PROPERTY • Связь C++ и QML • invokeMethod • QVariant • Работа с БД
Мета система
moc
• Meta Object Compiler • Генерация дополнительного кода перед сборкой проекта
• Обрабатываются все хедеры, указанные в headers секции
moc
• Meta Object Compiler • Генерация дополнительного кода перед сборкой проекта
• Обрабатываются все хедеры, указанные в headers секции
• Для каждого создается файл moc_myclass.cpp
moc
• Meta Object Compiler • Генерация дополнительного кода перед сборкой проекта
• Обрабатываются все хедеры, указанные в headers секции
• Для каждого создается файл moc_myclass.cpp • Чтобы корректно работали классы из .cpp файлов – надо в конце .cpp файла подключить myclass.moc
QMetaObject
• Имя класса • Методы • Свойства • Енамы (в том числе строковые представления значений)
• Создание новых объектов
QMetaObject
• Имя класса • Методы • Свойства • Енамы (в том числе строковые представления значений)
• Создание новых объектов • Вызов методов
QMetaObject
• Имя класса • Методы • Свойства • Енамы (в том числе строковые представления значений)
• Создание новых объектов • Вызов методов • Преобразование типов (qobject_cast)
Проблемы
• Лишний шаг компиляции • Отсутствие возможности использования дефайнов
• moc не поддерживает шаблонные классы
Проблемы
• Лишний шаг компиляции • Отсутствие возможности использования дефайнов
• moc не поддерживает шаблонные классы • signals и slots не входят в стандартные слова C++
Проблемы
• Лишний шаг компиляции • Отсутствие возможности использования дефайнов
• moc не поддерживает шаблонные классы • signals и slots не входят в стандартные слова C++
• Мелкие стилистические проблемы: – Полное название енамов – Обертывание указателей на функции в тайпдеф – …