我是一个有用的助手,可以为您翻译文本。
我有两个类:A类和B类。我正在从A类发出信号,希望B类能够接收到。
我按照以下方式进行操作:
在监听器文件中:
在A类中 头文件:
我有两个类:A类和B类。我正在从A类发出信号,希望B类能够接收到。
我按照以下方式进行操作:
在监听器文件中:
Header File:
Class Listener:public DDSDataReaderListener
{
//Some code
public:
A m_objectSendData;
}
实现文件:
void Listener::ondataavailable(DDSDataReader *reader)
{
m_objSendData.GetDDSData();
}
在A类中 头文件:
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();
}
在B类中
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()
这样的消息? - thugaconnect
的返回值。如果它是true
,那么连接成功了,你就不需要发出信号。如果它返回false
,那么请检查@Merlin069给你的答案。 - Marek RobjectA
变量的空间,而且你发出的对象在发出任何信号之前就被销毁了(objectA
是在堆栈上创建的局部变量,而不是在堆上)。 - Marek R