Arbeits Ich habe Probleme, ein Signal an einen Slot im folgenden Code zu verbinden:QT Connect Slot/Signal nicht
#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);
}
Die emit client->cliComando("prueba");
funktioniert, aber die eigentliche "emittiert" nicht. Die Konsole zeigt keinen Verbindungsfehler an und die QDebug-Texte zeigen an, dass alles gut funktioniert. Originalcode von http://www.bogotobogo.com/cplusplus/sockets_server_client_QT.php
Zeigen Sie uns Ihren Signalverarbeitungscode. – arrowd
_Der emit-Client-> cliComando ("prueba"); works_ Woher weißt du das? Außerdem können Sie SIGNAL einfach mit SIGNAL verbinden: _connect (client, SIGNAL (cliComando (const QString &)), SIGNAL (servComando (const QString &))); _ – Xplatforms
Auch _ "prueba" _ als Argument verwendet ist offensichtlich nicht _const QString & _ es hängt von den verwendeten Compilern und Qt-Switches ab Verwenden Sie _QStringLiteral ("pueba") _ und setzen Sie das SIGNAL/SLOT-Argument auf _const QString_, wenn Sie das Argument direkt in den Funktionskörper einfügen und nicht sicher, ob der instantated param im QMeta-Prozess noch verfügbar ist und den Wert – Xplatforms