Je ne parviens pas à connecter un signal à un emplacement dans le code suivant:QT Connect emplacement/signal ne fonctionne pas
#include "myserver.h"
MyServer::MyServer(QObject *parent) :
QTcpServer(parent)
{
}
void MyServer::StartServer()
{
if(listen(QHostAddress::Any, 45451))
{
qDebug() << "Server: started";
emit servComando("Server: started");
}
else
{
qDebug() << "Server: not started!";
emit servComando("Server: not started!");
}
}
void MyServer::incomingConnection(int handle)
{
emit servComando("server: incoming connection, make a client...");
// at the incoming connection, make a client
MyClient *client = new MyClient(this);
client->SetSocket(handle);
//clientes.append(client);
//clientes << client;
connect(client, SIGNAL(cliComando(const QString&)),this, SLOT(servProcesarComando(const QString&)));
// para probar
emit client->cliComando("prueba");
}
void MyServer::servProcesarComando(const QString& texto)
{
emit servComando(texto);
}
Les emit client->cliComando("prueba");
œuvres, mais le vrai « émet » ne le font pas. La console ne montre aucune erreur de connexion, et les textes QDebug montrent que tout fonctionne bien. Code d'origine a été copié à partir http://www.bogotobogo.com/cplusplus/sockets_server_client_QT.php
Montrez-nous votre code de gestion de signal. – arrowd
_Le client d'émission-> cliComando ("prueba"); works_ Comment le savez-vous? En outre, vous pouvez simplement connecter SIGNAL à SIGNAL: _connect (client, SIGNAL (cliComando (const QString &)), ceci, SIGNAL (servComando (const QString &))); _ – Xplatforms
Aussi _ "prueba" _ utilisé comme argument n'est pas évidemment _const QString & _ it Utilise _QStringLiteral ("prueba") _ Et affecte l'argument SIGNAL/SLOT à _const QString_ si vous insérez l'argument directement dans le corps de la fonction et que vous ne savez pas si le paramètre instancié dans le processus QMeta est toujours disponible et a la valeur – Xplatforms