将一个信号连接到多个插槽 Qt

connecting one signal to multiple slots qt

本文关键字:插槽 Qt 连接 一个 信号      更新时间:2023-10-16

我正在尝试连接两个带有ON信号的插槽。 这是我的头文件,我在其中定义了我的信号

class loginChecker : public QObject
{
Q_OBJECT
public:
static loginChecker *instance(void);
signals:
void loginid();
void loginemail();
 private:
loginChecker(void) {}
~loginChecker(void) {}
 private:
static loginChecker *s_instance;

};

这是我的插槽,它是另一个名为loginProcess的Signalton类。此类中的槽名(getUserData(QString& userData)

在登录检查器中.cpp我正在尝试将这些声明的信号与插槽连接getUserData(QString userData)

    loginProcess *lp;
   lp = loginProcess::instance();

这里我正在访问具有插槽的登录过程信号类的实例

这是我尝试连接这些信号和插槽的两种方式,但没有一种工作

     QObject::connect(s_instance, SIGNAL(loginid()), es, SLOT(getUserData(userid))); 

这在运行时不会引发此类插槽错误

    `QObject::connect(s_instance, &esCoreAuthenticator::loginid, es, &loginProcess::getUserData(uid));` 

这是在编译时cannot call member function 'void loginProcess::getUserData(const QString&)' without object抛出此错误

由于您的信号没有参数,因此您无法将其连接到具有参数的插槽。

而且在我看来,在第一种情况下,您应该尝试SLOT(getUserData(QString&)),而在第二种情况下,只需&loginProcess::getUserData没有任何括号。