и сломал.
void connect() {
t_ = std::thread(&myclass::start, this);
}
void start() {
QTcpSocket *socket = new QTcpSocket;
socket->connectToHost(ip, port);
QObject::connect(
socket, &QAbstractSocket::connected, this,
[this]() {
qDebug() << "connected";
},
Qt::DirectConnection);
while(true) {
//do()
}
}
while true блокирует поток и всё
А как по умному можно сделать, чтобы не блокировал?
не запускать бесконечный цикл в потоке
ну или каждую итерацию делать QApplication::processEvents
а вообще если создаёшь плюсишный поток то не используй сигналы, а используй блокирующие методы
Спасибо, как раз искал подобное что-то
Не надо делать processEvents, как подсказали вам ниже, это очень плохая практика, вы можете использовать QEventLoop и привязку сделать к методу exec
Обсуждают сегодня