Мета-объектная система - Meta-object System

Мета-объектная система является частью Фреймворк Qt ядро, предоставленное для поддержки расширений Qt для C ++ подобно сигналы / слоты для межобъектного взаимодействия, время выполнения информация о типе, и система динамических свойств.[1]

Архитектура

Система метаобъектов состоит из трех частей: QObject учебный класс, Q_OBJECT макрос и инструмент под названием moc (Meta-Object Компилятор ). QObject - это базовый класс для всех классов Qt, макрос Q_OBJECT используется для включения функций метаобъектов в классах и, наконец, moc - это препроцессор который изменяет экземпляры макроса Q_OBJECT на C ++ исходный код для включения механизма метаобъектной системы в классе, в котором он используется.[2]

Использование метаобъектной системы вызвало некоторую критику. В Qt документации, было указано несколько причин для использования системы метаобъектов, включая преимущества генерация кода, динамизм GUI, автоматическая привязка к языкам сценариев, без добавления ограничений, а также разумная производительность в реализации сигнала / слота с помощью moc.[3] Есть некоторые попытки избавить Qt от препроцессора. Эти усилия включают повторную реализацию Qt moc с использованием libclang.[4]

Рекомендации

  1. ^ «Мета-объектная система - QtCore 5.1». Qt Project. 2013-07-04. Получено 2013-07-04.
  2. ^ "Использование компилятора метаобъектов (moc)". Qt Project. 2013-07-04. Получено 2013-07-04.
  3. ^ "Почему Qt использует Moc для сигналов и слотов?". Qt Project. 2013-07-04. Получено 2013-07-04.
  4. ^ "Повторная реализация Qt moc с использованием libclang". Оливье Гоффар. 2013-07-04. Получено 2013-07-04.