标题可能很难理解,对此感到抱歉。
我对插槽的连接信号有问题。没有编译错误,但是连接返回false。 控制台中印有错误行:
QObject::connect: No such slot QObject::clientConnected_() in ../server/server.cpp:8
我认为问题是连接在类Server中看不到插槽clientConnected_()。或者也许出于某种原因在类QObject中寻找它。
代码如下:
server.h
#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
server.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;
}
有什么想法吗?
答案 0 :(得分:0)
static void clientConnected _();
更改为
专用插槽: void clientConnected _();
答案 1 :(得分:0)
如前所述,您应该将“ void clientConnected_()”除以非静态值(您无法连接到静态成员,但如果需要,则可以从插槽中调用静态方法)。而且,您还必须在“插槽”部分中声明插槽,以使MOC能够解析您的插槽。