У меня есть форма Qt, которая испускает сигнал;сигнал передает указатель на структуру, которая содержит загрузку данных, которые затем отправляет главное окно из моего qextserialport.
Это работало, но я что-то сделал [неизвестно], и теперь, когда я подключаю сигнал к слоту, если я не изменю его так, чтобы сингал ничего не пропустил, соединение с сигналом не будет работать,
В mainwindow.cpp у меня есть это:
void MainWindow::qt1245ValuesReceivedFromKeypad(char *dataPtr)
{
bool connected;
qt1245Window = new qt1245(this);
connected = connect(qt1245Window,SIGNAL(sendMessageToKeypad(struct qt1245MessageStruct *qm)),this,SLOT(sendToQT1245(struct qt1245MessageStruct *qm)));
qt1245Window->setupDataFromKeypad(dataPtr);
qt1245Window->keyMapping(BinData);
qt1245Window->keyDropDownChanged("DIM");
// connected = connect(qt1245Window,SIGNAL(sendMessageToKeypad()),this,SLOT(sendToQT1245()));
qt1245Window->exec();
}
Если я раскомментирую второе соединение, прокомментирую первое и изменим соответствующий код, соединение работает.
Структура определяется следующим образом:
struct qt1245MessageStruct
{
quint8 *dataPtr;
quint8 length;
quint8 keypadStartAddress;
quint8 programType;
};
В qt1245.h у меня есть это как часть объявления класса:
signals:
void sendMessageToKeypad(struct qt1245MessageStruct *qm);
в qt1245.cpp. сигнал излучается следующим образом:
void qt1245::sendQT1245Message(qt1245MessageStruct *qm)
{
emit sendMessageToKeypad(qm);
}
Может кто-нибудь пролить свет на то, почему connect возвращает false, если я пытаюсь передать указатель на структуру, пожалуйста? Кроме того, можно ли заставить Qt предоставлять информацию о том, почему происходит сбой соединения, вместо того, чтобы просто сказать, что имеет ?
Если вам потребуется дополнительная информация, я опубликую ее. Я не уверен на данном этапе, что помогло бы.
FWIW Я нахожусь на Linux, Qt Creator 4.9.0 на основе Qt 5.12.2.