У меня есть приложение QCoreApplication, которое во время запуска загружает разные плагины QtPlugins, которые получают данные из разных источников. Эти данные возвращаются в мое приложение QCoreApplication через зарегистрированную функцию обратного вызова (одинаковую для каждого плагина). Обратный вызов регистрируется следующим образом:
// m_manager is a class variable of the class registering the callback...
pluginInterface->registerCallback(std::bind(&Manager::handleData, std::ref(m_manager), _1));
Сейчас у меня следующая проблема: В одном из плагинов данные получает сторонняя библиотека по сети. Данные будут переданы в статическую функцию-член моего класса плагина вместе с самоопределяемой структурой, которая также содержит указатель this на класс плагина. Когда я получаю данные в плагине, я теперь хочу отправить их в свое приложение QCoreApplication через зарегистрированный обратный вызов. Кроме того, я хочу создать новые объекты (например, QTimer) в функции обратного вызова. Однако кажется, что цикл событий не выполняется при вызове функции обратного вызова из статической функции-члена через указатель this класса плагина. При просмотре членов созданного объекта QTimer его указатель QAbstractEventDispatcher равен 0. Таким образом, объект QTimer не может посылать никаких сигналов, что мне крайне необходимо.
Я думал, что вызов функции обратного вызова через указатель this класса плагина (где определенно работает QEventLoop, поскольку я могу без проблем использовать сигналы/слоты внутри плагина и из других нестатических функций-членов плагина в мой QCoreApplication ). Однако похоже, что я ошибаюсь. У кого-нибудь есть объяснение описанному поведению? Если нужны какие-либо другие детали, просто спросите их, и я постараюсь их предоставить.
С уважением, Роберт