Название может быть трудно понять, извините за это.
У меня проблема с подключением сигнала к слоту. Ошибок компиляции нет, но соединение возвращает false. В консоли выводится строка с ошибкой:
QObject::connect: No such slot QObject::clientConnected_() in ../server/server.cpp:8
Думаю проблема в том, что коннект не видит слот clientConnected_() в классе Server. Или, может быть, по какой-то причине ищет его в классе QObject.
Код выглядит следующим образом:
сервер.ч
#ifndef SERVER_H
#define SERVER_H
#include <QtNetwork>
#include <QTcpServer>
#include <QObject>
class Server : public QObject
{
Q_OBJECT
public:
bool startListening(const quint16 port);
public slots:
static void clientConnected_();
private:
QTcpServer * server_;
};
#endif // SERVER_H
сервер.cpp
#include "server.h"
#include <iostream>
bool Server::startListening(const quint16 port)
{
server_ = new QTcpServer();
QObject::connect(server_,SIGNAL(newConnection()),this,SLOT(clientConnected_()));
return server_->listen(QHostAddress::Any,port);
}
void Server::clientConnected_()
{
std::cout << "Connection established!" << std::endl;
return;
}
Есть идеи?
connect(server_, &QTcpServer::newConnection, this, &Server::clientConnected_);
. Проблема со старым стилем подключения в том, что он не сообщает вам, было ли подключение или нет во время компиляции, а просто кричит вам во время выполнения, поэтому рекомендуется использовать новый синтаксис. ` - person eyllanesc   schedule 09.10.2018