У меня 2 класса. Класс A и класс B. Я испускаю сигнал от класса A, который я хочу получить от B.
Я делаю это следующим образом
В файле прослушивателя
Header File:
Class Listener:public DDSDataReaderListener
{
//Some code
public:
A m_objectSendData;
}
Файл реализации:
void Listener::ondataavailable(DDSDataReader *reader)
{
m_objSendData.GetDDSData();
}
В классе А
Заголовочный файл:
Class A:public QObject
{
Q_OBJECT
public:
void GetDDSData();
signals:
void Signal_Data();
}
Файл .cpp
A::A(QWidget *parent):QObject(parent)
{
}
void A::GetDDSData()
{
emit Signal_Data();
}
В классе Б
Header File:
Class B:public QObject
{
Q_Object
public:
A objGetData;
public slots:
void getData();
}
Implementation File:
B::B(QWidget *parent):QObject(parent)
{
//Some part of code
connect(&objGetData,SIGNAL(Signal_Data()),this,SLOT(getData());
}
void B::getData()
{
//Watever is to be updated
}
Я пробовал отладку. Он будет испускать часть правильно. Однако он не достигает слота. Может кто-нибудь, пожалуйста, помогите мне с этим. Спасибо.
Object::connect: No such slot B::SlotB()
при запуске приложения? - person thuga   schedule 07.08.2013)
перед;
в вашем выраженииconnect
, но, очевидно, этого нет в вашем реальном коде. - person thuga   schedule 07.08.2013connect
возвращается. Если этоtrue
, то соединение было успешным, и вы просто не излучаете сигнал. Если он возвращаетfalse
, проверьте ответ, который дал вам @Merlin069. - person Marek R   schedule 07.08.2013objectA
, и ваш испускающий объект просто уничтожается, прежде чем он сможет выдать какой-либо сигнал (objectA
- это локальная переменная, созданная в стеке, а не в куче). - person Marek R   schedule 07.08.2013