繁体   English   中英

QObject :: connect无法将信号连接到* this *对象的插槽

[英]QObject::connect cant connect signal to a slot of *this* object

标题可能很难理解,对此感到抱歉。

我的插槽连接信号有问题。 没有编译错误,但是连接返回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;
}

有任何想法吗?

静态无效clientConnected_();

改成

专用插槽:void clientConnected_();

如前所述,您应将您的“ void clientConnected_()”作为非静态标签(您不能连接到静态成员,但如果需要,可以从插槽中调用静态方法)。 而且,您还必须在“插槽”部分中声明插槽,以使MOC能够解析您的插槽。

您可以在这里找到更多信息http://doc.qt.io/qt-5/signalsandslots.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM