Ich suche nach einer Möglichkeit, eine Art Signalübertragung mit Qt zu haben. In meinem Entwurf bekam ich ein Auth
Objekt, das in c verwendet werden kann ++ und QML Seite:Broadcast ein Qt-Signal zu Instanzen jedes Objekts
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() ;
};
Wenn login
logged()
Signale dann aufgerufen wird, werden gefeuert und loggedOut()
Signal für logout()
.
1- Im qml Teil i diesen Code haben:
Auth {
id: auth
onError: console.log("auth error")
onLogged: console.log("auth logged")
onLoggedOut: console.log("auth logged out")
}
2- Und in der C++ Seite ich in einigen Fehlerfällen tun kann:
Auth auth ;
auth.logout() ;
Die beiden Auth
Objekte von 1 und 2 sind nicht die gleichen, so dass die loggedOut
von einem emittiert wird nicht in den anderen entlassen, das ist in Ordnung.
Nun, was ich versuche, ist eine Möglichkeit, das loggedOut
Signal an alle Instanzen von Auth
zu senden. Ich möchte vermeiden, eine gemeinsame Instanz von Auth
zwischen C++ und qml Seite zu teilen.
Gibt es einen Standard Weg dies zu tun?
Ich habe die erste Methode implementiert. Ich dachte daran, auf die zweite umzusteigen, aber sie sind nicht genau gleichwertig, es scheint, als würde ich die Fähigkeit verlieren, ein Ereignis auf eine bestimmte Instanz auszulösen. – Falco