Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Signal unter Windows nicht vorhanden unter Linux schon



  • Hallo zusammen,

    ich habe bisher mein Qt QML Projekt unter Linux mit Qt 5.12.4 / 5.14.2 entwickelt und keine Probleme gehabt. Jetzt wollte ich die Windows Anwendung erstellen, habe dazu das aktuelle Qt für Windows geladen und unter Windows 10 installiert.
    Beim starten bekomme ich jetzt die Fehlermeldung, dass ein Signal

    QObject::connect: signal not found in QJsonRpcHttpClient

    nicht vorhanden ist.

    Woran kann denn das liegen, dass es unter Linux / Android keine Probleme gibt unter Windows aber schon?

    Danke für Eure Hilfe.
    gruss
    martin


  • Lifetime Qt Champion

    @msauer751 said in Signal unter Windows nicht vorhanden unter Linux schon:

    QJsonRpcHttpClient

    Das sieht ja auch wie der Name einer Klasse aus.
    Wo ist dieses connect, kannst du den Code zeigen?



  • Der Aufruf von Connect:

    QJsonRpcHttpClient                  *RpcClient{new QJsonRpcHttpClient(Url)};
    
    QObject::connect(RpcClient,     &QJsonRpcHttpClient::messageReceived,       std::bind(&CachePrivate::MsgRecieved, this, std::placeholders::_1));
    

    Das Signal ist nicht in QJsonRpcHttpClient definiert:

    class QJSONRPC_EXPORT QJsonRpcHttpClient : public QJsonRpcAbstractSocket
    {
        Q_OBJECT
    public:
        QJsonRpcHttpClient(QObject *parent = 0);
        QJsonRpcHttpClient(const QString &endPoint, QObject *parent = 0);
        QJsonRpcHttpClient(QNetworkAccessManager *manager, QObject *parent = 0);
        ~QJsonRpcHttpClient();
    ...
    }
    

    sondern in der Eltern Klasse QJsonRpcAbstractSocket:

    class QJSONRPC_EXPORT QJsonRpcAbstractSocket : public QObject
    {
        Q_OBJECT
    public:
        explicit QJsonRpcAbstractSocket(QObject *parent = 0);
        ~QJsonRpcAbstractSocket();
    
        virtual bool isValid() const;
        void setDefaultRequestTimeout(int msecs);
        int getDefaultRequestTimeout() const;
    
    Q_SIGNALS:
        void messageReceived(const QJsonRpcMessage &message);
    ...
    }
    

    Noch zur Info: Das Connect habe ich im Konstruktor einer Private Implementierung mittels d-ptr.

    Ich hoffe ich habe sonst nichts weiter vergessen.

    gruss
    martin


  • Lifetime Qt Champion

    @msauer751 Was passiert wenn du QJsonRpcHttpClient durch QJsonRpcAbstractSocket ersetzt im connect?
    Es könnte sein dass der Compiler unter windows das irgendwie nicht auflöst - welchen Compiler benutzt du unter Windows?



  • @jsulm

    Als Compiler verwende ich den MinGW 7.3-64.

    QObject::connect(RpcClient,     &QJsonRpcAbstractSocket::messageReceived,       std::bind(&CacheListePrivate::MsgRecieved, this, std::placeholders::_1));
    

    Damit kommt die selbe Fehlermeldung. Was mich wundert, ist, dass meine selbst erstellten Klassen ohne diesem Fehler funktionieren.

    gruss
    martin


Log in to reply