Информация об изменениях

Сообщение Re[4]: QSocket как blocking socket от 16.06.2020 21:35

Изменено 16.06.2020 21:42 qtprogger

Re[4]: QSocket как blocking socket
Здравствуйте, SaZ, Вы писали:


Q>>Пробовал QEventLoop, но он без QApplication не хочет работать.


SaZ>Ну так создайте его 1 раз где нибудь.


Вот в этом то и проблема. Я в топике не донес проблему.

Мне нужно сунуть синхронные сокеты в метод динамической библиотеки, которая используется не в Qt-GUI.
При создании в отдельном std::thread конструкции вида
QCoreApplication app(/*...*/);
//... работают сокеты
app.exec();

Возникает сообщение
WARNING: QApplication was not created in the main() thread.

и ничего не работает.
Re[4]: QSocket как blocking socket
Здравствуйте, SaZ, Вы писали:


Q>>Пробовал QEventLoop, но он без QApplication не хочет работать.


SaZ>Ну так создайте его 1 раз где нибудь.


Вот в этом то и проблема. Я в топике не донес проблему.

Мне нужно сунуть синхронные сокеты в метод динамической библиотеки, которая используется не в Qt-GUI.
При создании в отдельном std::thread конструкции вида
QCoreApplication app(/*...*/);
//... работают сокеты
app.exec();

Возникает сообщение
WARNING: QApplication was not created in the main() thread.

и ничего не работает.


P.S. более точно, вот так пытался завести клиента, в методе динамической библиотеки, не получилось. Если без QApplication обойтись нельзя, то Qt не поможет.
    Client * client = nullptr;
     std::thread th
      (
          [&]
          {
              QCoreApplication app(argc, argv);
              client = new Client;
              return app.exec();
         }
     );
     
     th.detach();
     while(!client)
     {
         qDebug() << "nulptr";
         QThread::usleep(1000);
     }
    client->setHostName("localhost");