
Сигнал QTcpSocket::readyRead()
Всем привет.
Есть класс, в котором есть объект класса, работающий с QTcpSocket. Этот класс создается в main():
int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); MController mc; mc.set_ip(ip); mc.set_password(password); mc.set_data_for_send(packet); mc.start(); return a.exec(); }
В методе start() создается объект для работы с сокетом, осуществляется соединение и при успешном коннекте в сокет отправляются нужные данные.
Но сигнал QTcpSocket::readyRead() не емитится и привязанный к нему слот не вызывается.
Посмотрел в Wireshark - данные уходят и приходит ответ.
Сам метод start() (выкинул то, что не имеет отношения к делу):
void MController::start() { constexpr uint16_t port = 2222; device_connector = std::make_unique<TCP_Connector>(ip_, port); device_connector->connect_to_device(); dynamic_cast<TCP_Connector*>(device_connector.get())->wait_ready_read(); }
В конец метода вставил
dynamic_cast<TCP_Connector*>(device_connector.get())->wait_ready_read();
в нем происходит:
tcp_->waitForReadyRead(4000);
После этого сигнал срабатывает один раз. по приему данных отправляю следующие данные, и ответа опять нет.
Думаю, что что-то связано с циклом обработки событий, но не пойму как сделать так, чтобы соединение создавалось после запуска этого цикла обработки событий.
Причем есть подобный код, но с графикой - там проблем нет. Но там коннект по кнопке осуществляется.
Как заставить работать нормально сигналы и слоты? Что-то затупил малость.

We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.Fornex
Let me recommend you a great European Fornex hosting.
Fornex has proven itself to be a stable host over the years.
For Django projects I recommend VPS hosting
Following the link you will receive a 5% discount on shared hosting services, dedicated servers, VPS and VPN
View HostingShare on social networks
Donate
The EVILEG project has switched to a non-commercial basis and will develop solely on the enthusiasm of the site creator, the enthusiasm of users, donations and the hosting referral system
Thank you for your support
Available ways to support the project
PayPal
PatreonYandex.MoneyMore
Да - пробовал еще QTimer создать, но он тоже не срабатывает.
"После этого сигнал срабатывает один раз" - один раз и должен был сработать до вызова обработчика событий;
"readyRead() не емитится и привязанный к нему слот не вызывается" - этого и не видно в представленном коде;
"этого и не видно в представленном коде;" - это внутренности MController. Во внутренностях этот коннект есть