Следуя приведенному здесь коду: Перехватив событие щелчка по значку в доке с помощью Qt на Mac, я попытался вызвать следующий метод непосредственно в конструкторе моего QApplication, чтобы получать уведомления о событиях щелчка по значку в доке:
[[NSAppleEventManager sharedAppleEventManager]
setEventHandler: m_dockIconClickEventHandler
andSelector: @selector(handleDockClickEvent:withReplyEvent:)
forEventClass: kCoreEventClass
andEventID: kAEReopenApplication];
Если я вызываю его напрямую, я не получаю уведомления об этом событии. Однако, если я вызываю его с помощью QTimer::singleShot
с задержкой, скажем, 5000 мс, я получаю уведомления просто отлично.
Кроме того, согласно документации Qt, «QTimer с интервалом ожидания 0 истечет время ожидания, как только будут обработаны все события в очереди событий оконной системы». Поэтому я попробовал 0 мс, но это не сработало. 1 или выше кажется.
Почему мне нужно ждать и что может быть лучше, чем задержка на n мс?