Je tryng pour relier() d'un signal en fil 2 à fente dans un fil conducteur, j'ai constructeur du genre, qui se déroule en fil 2 en tant que catégorie enfant de QThread:fentes et les signaux dans QThread
InputHandler::InputHandler()
{
connect(this, SIGNAL(write(User*, Message)), TTCServer::ttcserver, SLOT(write(User*, Message)));
qDebug() << "new thread created!";
}
mais je reçois une erreur d'exécution
QObject::connect: No such signal QThread::write(User*, Message)
Mon inputhandler.h ressemble à ça:
#ifndef INPUTHANDLER_H
#define INPUTHANDLER_H
#include <QThread>
#include <QDebug>
#include <QString>
#include "message.h"
#include "data.h"
class InputHandler : public QThread
{
public:
InputHandler();
void run();
private:
Message message;
void login(User* user, QString login);
void sendLogins(User* user);
void startGameWith(User* user, QString opponentLogin);
signals:
void write(User* user, Message message);
};
#endif // INPUTHANDLER_H
Et si cela importe, je suis als o inncluding ttcserver.h:
#ifndef TTCSERVER_H
#define TTCSERVER_H
#include <QTcpServer>
#include <QObject>
#include <QDebug>
#include "data.h"
#include "user.h"
#include "message.h"
#include "inputhandler.h"
class TTCServer : public QTcpServer
{
Q_OBJECT
public:
explicit TTCServer();
static TTCServer* ttcserver;
void run();
signals:
public slots:
void newConnection();
void write(User* user, Message message);
private:
QTcpServer* server;
Message* message;
void handleInputFrom(User* user);
};
#endif
// TTCSERVER_H
void write
méthode est DÉFINIES dans ttcserver.cpp comme ça:
void TTCServer::write(User* user, Message message)
{
qDebug() << "Signal recieved!";
}
Alors pourquoi write(User*, Message)
dans une fonction connect()
essaie d'être QThread::write()
au lieu de InputHandler::write()
?
User
et Message
sont des classes, pour être clair.
Si vous utilisez Qt5, ils ont un nouveau format pour 'connect()' qui utilise des adresses réelles au lieu des macros SIGNAL et SLOT. Peut-être que cela serait plus prévisible pour vous. http://doc.qt.io/qt-5/signalsandslots.html – infixed
J'utilise Qt5.8, je n'ai pas eu besoin de changer le code, parce que le nouveau Qt est rétrocompatible, mais de toute façon, c'est une fonctionnalité sympa montré ici. – Ginko
http://stackoverflow.com/questions/26422154/my-signal-slot-connection-does-not-work/26422155#26422155 – Silicomancer