Проблема с сигналами и слотами

Есть некоторый класс который имеет определенную логику работы с устройством, устройство постоянно посылает данные которые обрабатывает другой мой класс , экземпляр класса который принимает и обрабатывает данные посылает сигнал который говорит что данные с читаны, но этот сигнал я не вижу. В чем может быть дело , при всем этом сигнал которые я получаю который посылается при конекте к устройству я отлавливаю. Привожу в пример код:

BINS::BINS(QWidget *parent) {
bins_ = new BinsProtocol; 
// пробовал засунуть в поток результат тот же 
//bins_->moveToThread(&binsThread_);
//connect(&binsThread_, &QThread::finished, bins_, &QObject::deleteLater);
connect(bins_, &BinsProtocol::isConnectedChanged, this, &BINS::isConnected);
connect(bins_, &BinsProtocol::navigationReceived, this,
         [](){qDebug()<<"testConnectNavigationLambda";});
}

Сигнал isConnectedChanged приходит а navigationReceived нет.

void BinsProtocol::parseNavigation(const QByteArray& data) {
if (data.size() != sizeof(bins_nav_data)) {
qCritical() << "Пакет навигационных данных должен быть"
            << sizeof(bins_nav_data) << "байт. Пришёл:" << data.size()
            << "байт.";
return;
}
qDebug() << "parsDataOk";
copyTo(data, navigation_);
qDebug()<<"tttttest";
emit navigationReceived();
qDebug()<<"emit retData"<<navigation_.bins_pitch;
}

При этом я проверяю и в эту функцию есть вход , так же проверочные печати работают, а вот отловить сигнал не могу, перепробовал подключать сигналы через явный вид SIGNAL()SLOT() это тоже не помогает, подскажите куда копать


Ответы (1 шт):

Автор решения: Sergey Tatarincev

Попробуем погадать на кофейной гуще.

по умолчанию сигналы обрабатываются в локальном эвентлупе. ваша программа скорее всего где-то крутится в бесконечном цикле не обрабатывая события и сигналы. Без более подробного кода к сожалению не определить где проблема. Попробуйте соединить напрямую. Если получится, то копайте где у вас бесконечный цикл без выхода в эвентлуп

connect(bins_, &BinsProtocol::navigationReceived, this,
         [](){qDebug()<<"testConnectNavigationLambda";},Qt::DirectConnection);
→ Ссылка