#c #qt #qt4
#c #qt #qt4
Вопрос:
Я использую Qt 4.5 в Windows XP. Я знаю, что мы должны использовать Q_OBJECT
макрос для механизма подключения сигнальных слотов. Но помимо этого, есть ли какие-либо другие причины использовать Q_OBJECT
макрос? Недавно я узнал, что для некоторых других функций метаобъекта нам требуется Q_OBJECT
объявление. Что это за функции рядом с сигнальными слотами? Я пытался найти документацию по этому поводу, но не смог найти ничего полезного. Любые указания на этот счет приветствуются.
Ответ №1:
Вы можете найти все, что вам нужно знать о том, когда требуется макрос Q_OBJECT здесь:
http://doc.qt.digia.com/4.6/metaobjects.html
В резюме он нужен для сигналов и слотов, чтобы использовать tr для трансляции, извлекать имя класса в режиме реального времени из QObject, знать, наследуется ли он от другого класса (instrospection), устанавливать свойства и иметь возможность вызывать newInstance.
Надеюсь, это поможет.
Комментарии:
1. Вам не нужно это, чтобы знать, наследует ли данный класс от другого. Контрпример см. в разделе Boost features.
2. Извините, я должен был сказать, что вы также можете использовать его для вместо того, чтобы вам это нужно для 🙂
Ответ №2:
AFAIK его можно использовать для восстановления метаинформации (имен слотов сигналов, переменных) и обеспечивает поддержку отслеживания прав собственности на объекты. (он же. просто создайте new и передайте родительские объекты этим объектам, и они будут удалены детерминированно по прошествии времени родительского объекта.)