Метаобъектная система
Система метаобъектов — это часть ядра платформы Qt, предназначенная для поддержки расширений Qt для C++, таких как сигналы/слоты для межобъектной связи, информация о типах во время выполнения и система динамических свойств. [1]
Архитектура
[ редактировать ]Система мета-объектов состоит из трех вещей: класса QObject , макроса Q_OBJECT и инструмента под названием moc ( компилятор мета-объектов ). QObject — это базовый класс для всех классов Qt, макрос Q_OBJECT используется для включения функций метаобъектов в классах и, наконец, moc — это препроцессор , который изменяет экземпляры макроса Q_OBJECT на C++ исходный код , чтобы включить механизм системы метаобъектов в классе, в котором он находится. использовал. [2]
Использование системы метаобъектов вызвало некоторую критику. В документации Qt было указано несколько причин использования системы метаобъектов, включая преимущества генерации кода , динамизм графических интерфейсов , автоматическую привязку к языкам сценариев, отсутствие дополнительных ограничений, а также разумную производительность при реализации сигналов/слотов с помощью moc. [3] Предпринимаются некоторые попытки сделать Qt ненужным в препроцессоре. Эти усилия включают повторную реализацию Qt moc с использованием libclang. [4]
Ссылки
[ редактировать ]- ^ «Метаобъектная система — QtCore 5.1» . Проект Qt. 04 июля 2013 г. Проверено 4 июля 2013 г.
- ^ «Использование метаобъектного компилятора (moc)» . Проект Qt. 04 июля 2013 г. Проверено 4 июля 2013 г.
- ^ «Почему Qt использует Moc для сигналов и слотов?» . Проект Qt. 04 июля 2013 г. Проверено 4 июля 2013 г.
- ^ «Повторная реализация Qt moc с использованием libclang» . Оливье Гоффарт. 04 июля 2013 г. Проверено 4 июля 2013 г.