Russian Qt Forum
Ноябрь 22, 2024, 20:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Потребность макроса Q_OBJECT в разрабатываемых классах.  (Прочитано 10911 раз)
Dragon
Гость
« : Май 25, 2010, 15:45 »

Макрос Q_OBJECT нужно использовать обязательно в классах, наследуемых от QObject, где используются сигналы, слоты и свойства. В некоторых статьях читал, что рекомендуют использовать макрос внезависимости от того используются ли сигналы, слоты и свойства или нет т.к. некоторые функции могут вести себя неправильно.

Как обстоит дело в реальной жизни, на реальных проектах? Сильно влияет на скорость, размер и др. критические параметры ПО присутствие/отсутствие сего макроса?
Записан
ритт
Гость
« Ответ #1 : Май 25, 2010, 16:11 »

Макрос Q_OBJECT нужно использовать обязательно в классах, наследуемых от QObject, где используются сигналы, слоты и свойства и/или для данного класса будет использоваться qobject_cast и/или tr().
в общем, проще и надёжнее его использовать, чем нет...
Записан
Rcus
Гость
« Ответ #2 : Май 25, 2010, 16:27 »

Ну так можно и посмотреть что из себя представляет данный макрос, \see $QTDIR/src/corelib/kernel/qobjectdefs.h (L:155 Qt-4.6.0)
Влияние на размер кода ничтожно (\try nm -CS $some_app | grep qt_meta).
Отрицательное влияение на производительность... хм... ... ... ... Хотел написать про qobject_cast и последовательность strcmp, но, пожалуй, не стану.
Записан
SASA
Гость
« Ответ #3 : Май 26, 2010, 15:19 »

Макрос Q_OBJECT "добавляет" мето-объектную информацию, некий аналог RTTI.
Если какая-то функция захочет получить такую инфу от вашего класса, в котором нет Q_OBJECT, то обругается компилятор.
Я бы советовал добавлять макрос по мере надобности.
Недостаток у него один - усложняет компиляцию.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 21.