Портирование библиотеки Windows с помощью Qt на MacOSX, циклы событий

Я вставляю хук в цикл сообщений MFC, чтобы обрабатывать события Qt, не запуская ->exec() в qApp (потому что он блокирует):

LRESULT CALLBACK myHookFn(int ncode, WPARAM wparam, LPARAM lparam) {
    if (qApp) qApp->sendPostedEvents();
    return CallNextHookEx(0, ncode, wparam, lparam);
}

а также

int argc = 0;
new QApplication(argc, NULL);
SetWindowsHookEx(WH_GETMESSAGE, myHookFn, 0, threadId);

Мой вопрос:

Какие механизмы эквивалентны вставке хука MFC, которые можно использовать в MacOSX, чтобы можно было также вызывать sendPostedEvents?


person moala    schedule 14.01.2009    source источник


Ответы (1)


Это должно происходить автоматически с Qt Mac 4.5 (как порты Carbon, так и Cocoa) — поскольку Qt зарегистрирован как CFRunLoopSource в CFRunLoop, и обратный вызов вызовет sendPostedEvents. См. также qeventdispatcher_mac.mm в src/gui/kernel Qt 4.5.

person Henrik Hartz    schedule 14.01.2009