Подавить предупреждение «QApplication не был создан в потоке main ()»

Я создал сетевую библиотеку на основе Qt для использования с приложениями, которые не запускают цикл событий Qt, и которые не обязательно являются приложениями Qt. Это стало возможным благодаря созданию QCoreApplication экземпляр в потоке в ответ от Можно ли создавать локальные циклы событий без вызова QApplication :: exec ()?

Это работает отлично, но это расстраивает Qt (я предполагаю, что боюсь, что я попытаюсь манипулировать GUI вне основного потока, который не будет работать, но я не работаю), и поэтому выводит предупреждение: WARNING: QApplication was not created in main() thread,

Я хотел бы подавить это предупреждение, которое в противном случае будет напечатано на консоли X11 и, скорее всего, заставит моих пользователей вводить кучу ненужных недостатков. Тем не менее, я хотел бы просто подавить ЭТОТ ошибка, как я использую qDebug для некоторых законных целей и хотят видеть будущие предупреждения. Есть ли способ сделать это, как какой-то Qt #pragma?

РЕДАКТИРОВАТЬ:

Подобный вопрос был задан ранее здесь: Консольное приложение Qt "ВНИМАНИЕ: QApplication не был создан в потоке main ()", но ответ был в основном просто пересмотром кода без каких-либо значимых идей для подавления предупреждения.

7

Решение

Проблема возникает из-за того, что вы касаетесь Qt API (в основном потоке или просто в немного поток) до создания QApplication. Вы не можете сделать это. Особенно, вы создаете QObject какой-то, который устанавливает где-то в Qt то, что сам Qt должен рассматривать как main нить.

Единственные API Qt, которые вам разрешено использовать перед созданием QApplication, — это те, которые явно документированы, чтобы быть безопасными в этом сценарии.

Итак: не делай этого. Создайте QCoreApplication как первое, тогда ты можешь идти.

9

Другие решения


По вопросам рекламы [email protected]