我正尝试连接两个插槽并打开信号。这里是我的头文件,我已经定义了我的信号将一个信号连接到多个插槽qt
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;
};
它是sigalton类。这里是我的插槽,在loginChecker.cpp 命名为loginProcess 插槽名称在这个类中getUserData(QString& userData)
我想这些声明的信号,getUserData(QString userData)
插槽
loginProcess *lp;
lp = loginProcess::instance();
这里连接另一个signalton类我正在访问loginProcess信号类的实例有插槽
这些是两种方法我试图连接这些信号和插槽,但没有工作
QObject::connect(s_instance, SIGNAL(loginid()), es, SLOT(getUserData(userid)));
这在运行时抛出了没有这样的插槽错误
`QObject::connect(s_instance, &esCoreAuthenticator::loginid, es, &loginProcess::getUserData(uid));`
这是在编译时
感谢看起来像第二个工作,但我不明白如何getUserData将获得user_id的值,如果我不通过它的参数... – user3290805
@ user3290805传递它在你的信号:'信号: void loginid(const QString &id);''然后你发出它,就像'emit loginid(user_id)'或者你为'user_id'使用的任何东西一样,你也可以使用['QSignalMapper'](http://qt-project.org/ doc/qt-5.0/qtcore/qsignalmapper.html) – thuga
是的,我的建议是不是将它从插槽中删除,而是将它添加到信号,如果你需要通过它。 – Predelnik