qt 5中的信号插槽问题 我有一个C++类,其中有一个信号,并且希望将该信号与另一个C++类的槽连接。这是我的密码 class Data : public QObject { Q_OBJECT public: static Data *instance(void); signals: void sendUserID(const QString& userId); private: static Data *s_instance; };
这是我在另一个班的位置qt 5中的信号插槽问题 我有一个C++类,其中有一个信号,并且希望将该信号与另一个C++类的槽连接。这是我的密码 class Data : public QObject { Q_OBJECT public: static Data *instance(void); signals: void sendUserID(const QString& userId); private: static Data *s_instance; };,c++,qt,qt5,signals-slots,C++,Qt,Qt5,Signals Slots,这是我在另一个班的位置 void DataDetails::seTUserID(const QString user_id) { QAndroidJniObject user_id = QAndroidJniObject::fromString(user_id); QAndroidJniObject::callStaticMethod<void>("com/user/data/userActivity",
void DataDetails::seTUserID(const QString user_id)
{
QAndroidJniObject user_id = QAndroidJniObject::fromString(user_id);
QAndroidJniObject::callStaticMethod<void>("com/user/data/userActivity",
"setUserID",
"(Ljava/lang/String;)V",
user_id.object<jstring>());
}
将uid获取到其他类的任何其他id也可以。检查seTUserID定义是否标记为插槽。您可能正在某些数据方法中调用connect(因为您直接使用私有成员)。您正在尝试使用指向s_实例O_O的指针的引用吗?写入sendUserID(const Qstring)(信号的签名)而不是sendUserID(uid)。setUserID的情况也一样。您正在尝试连接到此指针,并希望将信息发送到另一个类!?使用Qt5中引入的新型Qt连接信号和插槽(指向成员的指针)。检查setUserID是否写对了。一般来说,当您遇到
QObject::connect的问题时,
确保您的声明有序:
- 这两个类在声明中都需要Q_对象宏
- 确保您的插槽实际声明为插槽(即属于
部分)公共插槽:
- 始终在可以看到应用程序控制台输出的环境中进行测试。失败的连接调用通常会触发打印到stderr的错误消息
- 仔细检查您的方法名称和签名。即使您输入了错误,代码仍然可以编译李>
- 对于调试,使用断言(例如,
)尽早捕获丢失的连接boolc=connect(…);Q_ASSERT(c);
- 或者,您可以使用Qt4.8中介绍的来避免这些问题
在您的特殊情况下:
seTUserID
,但在connect调用中使用的是seTUserID
QObject::connect(&s_实例,信号(sendUserID(const QString),这个,插槽(setUserID(const QString))
这是否有效:QObject::connect(&s_实例,信号(sendUserID(uid)),this,SLOT(setUserID(uid))?尝试无效数据详细信息::setUserID(const QString&user_id)或将两者的参数都设置为(QString user_id)。不起作用…QObject::connect(&s_实例,信号(sendUserID(uid)),this,SLOT(setUserID(uid));有了这个,错误是“信号”没有在这个范围内声明,我已经检查了这些东西,你在上半部分提到的要点,我遵循了所有,但我面临的错误仍然是“没有这样的槽”,这是因为它没有得到第二类的实例(DataDetails)这就是sigalton,我不知道如何在数据类中获取DataDetails类的实例…你能给我一点指导吗
QObject::connect(&s_instance, SIGNAL(sendUserID(uid), this, SIGNAL(setUserID(uid))