我正嘗試連接兩個插槽並打開信號。這裏是我的頭文件,我已經定義了我的信號將一個信號連接到多個插槽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