Я создал сетевую библиотеку на основе Qt для использования с приложениями, которые не запускают цикл событий Qt, и которые не обязательно являются приложениями Qt. Это стало возможным благодаря созданию QCoreApplication
экземпляр в потоке в ответ от Можно ли создавать локальные циклы событий без вызова QApplication :: exec ()?
Это работает отлично, но это расстраивает Qt (я предполагаю, что боюсь, что я попытаюсь манипулировать GUI вне основного потока, который не будет работать, но я не работаю), и поэтому выводит предупреждение: WARNING: QApplication was not created in main() thread
,
Я хотел бы подавить это предупреждение, которое в противном случае будет напечатано на консоли X11 и, скорее всего, заставит моих пользователей вводить кучу ненужных недостатков. Тем не менее, я хотел бы просто подавить ЭТОТ ошибка, как я использую qDebug
для некоторых законных целей и хотят видеть будущие предупреждения. Есть ли способ сделать это, как какой-то Qt #pragma
?
РЕДАКТИРОВАТЬ:
Подобный вопрос был задан ранее здесь: Консольное приложение Qt "ВНИМАНИЕ: QApplication не был создан в потоке main ()", но ответ был в основном просто пересмотром кода без каких-либо значимых идей для подавления предупреждения.
Проблема возникает из-за того, что вы касаетесь Qt API (в основном потоке или просто в немного поток) до создания QApplication. Вы не можете сделать это. Особенно, вы создаете QObject какой-то, который устанавливает где-то в Qt то, что сам Qt должен рассматривать как main
нить.
Единственные API Qt, которые вам разрешено использовать перед созданием QApplication, — это те, которые явно документированы, чтобы быть безопасными в этом сценарии.
Итак: не делай этого. Создайте QCoreApplication как первое, тогда ты можешь идти.