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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как работает интерпретатор когда встречает emit ?  (Прочитано 9737 раз)
neosapient
Гость
« : Октябрь 29, 2008, 15:40 »

Добрый день.

Не могу понять, как работает интерпретатор когда встречает  emit. Где то должен быть #define ? Или модуль moc вообще всё подменяет ?

Другими словами: можно ли самому организовать "оповещение", как это делается командой emit ?
Записан
ритт
Гость
« Ответ #1 : Октябрь 29, 2008, 16:01 »

invokeMethod
Записан
Rcus
Гость
« Ответ #2 : Октябрь 29, 2008, 16:30 »

emit(Q_EMIT) это просто пустой макрос чтобы отличать вызовы методов от сигналов, вся магия заключена в moc_*.cpp, там находится реализация сигналов и таблица метаинформации для класса, moc генерит подобные вещи для всех встреченных классов с макросом Q_OBJECT
Записан
SASA
Гость
« Ответ #3 : Октябрь 29, 2008, 17:13 »

emit(Q_EMIT) это просто пустой макрос чтобы отличать вызовы методов от сигналов.

Всегда мучили вопросы: "А заканчиваются ли на этом функции emit? А может в следующей версии Qt без emit и работать перестанет?"
Записан
Rcus
Гость
« Ответ #4 : Октябрь 29, 2008, 17:32 »

Всегда мучили вопросы: "А заканчиваются ли на этом функции emit? А может в следующей версии Qt без emit и работать перестанет?"
У Qt лучшая документация, если там чего-то нет значит это не входит в контракт интерфейса и является деталью реализации. В Old New Thing подробно рассказывается о контракте интерфейса, если надо почитаете
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Октябрь 29, 2008, 17:51 »

ихо, emit служит для наглядности да и только
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
SASA
Гость
« Ответ #6 : Ноябрь 01, 2008, 15:38 »

У Qt лучшая документация, если там чего-то нет значит это не входит в контракт интерфейса и является деталью реализации. В Old New Thing подробно рассказывается о контракте интерфейса, если надо почитаете
А что такое контракт интерфейса, и где читать Old New Thing?
Заранее спасибо.
Записан
Rcus
Гость
« Ответ #7 : Ноябрь 01, 2008, 21:08 »

http://en.wikipedia.org/wiki/Contract_programming
А The Old New Thing это блог Raymond Chen, человека знающего почему работает Windows, вот интересный пример: http://blogs.msdn.com/oldnewthing/archive/2008/09/25/8965129.aspx (title:Even if a function doesn't do anything, you still have to call it if the documentation says so, because it might do something tomorrow)
« Последнее редактирование: Ноябрь 01, 2008, 22:19 от Rcus » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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