【发布时间】:2016-05-26 11:25:54
【问题描述】:
我正在寻找一种使用 Qt 进行信号广播的方法。
在我的设计中,我得到了一个 Auth 对象,可以在 c++ 和 qml 端使用:
class Auth : public QObject
{
Q_OBJECT
public:
Auth() ;
Q_INVOKABLE bool isLogged() const ;
Q_INVOKABLE void reconnect() ;
Q_INVOKABLE void login(QString mail, QString password) ;
Q_INVOKABLE void logout() ;
protected:
static QString token_ ;
signals:
void error(QString message) ;
void logged() ;
void loggedOut() ;
};
当login 被调用时,logged() 信号被触发,loggedOut() 信号为logout()。
1- 在 qml 部分我有这个代码:
Auth {
id: auth
onError: console.log("auth error")
onLogged: console.log("auth logged")
onLoggedOut: console.log("auth logged out")
}
2- 在 c++ 方面,我可能会在某些失败情况下这样做:
Auth auth ;
auth.logout() ;
来自 1 和 2 的两个 Auth 对象不相同,因此从一个发出的 loggedOut 不会在另一个中触发,没关系。
现在我想做的是有一种方法可以将loggedOut 信号广播到Auth 的每个实例。我想避免在 C++ 和 qml 端之间共享 Auth 的公共实例。
有标准的方法吗?
【问题讨论】:
标签: c++ qt qml signals-slots