Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt错误-错误:不是信号或插槽声明_C++_Qt_Qthread_Qtcpsocket - Fatal编程技术网

C++ Qt错误-错误:不是信号或插槽声明

C++ Qt错误-错误:不是信号或插槽声明,c++,qt,qthread,qtcpsocket,C++,Qt,Qthread,Qtcpsocket,我正在尝试在QT中创建多线程服务器。然而,我不断地遇到这个恼人的错误: 错误:不是信号或插槽声明(第21行) 这是我的密码: mythread.h #ifndef MYTHREAD_H #define MYTHREAD_H #include <QThread> #include <QTcpSocket> class MyThread : public QThread { Q_OBJECT public: explicit MyThread(int ID

我正在尝试在QT中创建多线程服务器。然而,我不断地遇到这个恼人的错误:

错误:不是信号或插槽声明(第21行)

这是我的密码:

mythread.h

#ifndef MYTHREAD_H
#define MYTHREAD_H

#include <QThread>
#include <QTcpSocket>

class MyThread : public QThread
{
    Q_OBJECT
public:
    explicit MyThread(int ID, QObject *parent = 0);
    void run();
signals:
    void error(QTcpSocket::SocketError socketerror);

public slots:
    void readyRead();
    void disconnected();

public slots:
    QTcpSocket *socket;
    int socketDescriptor; //Socket ID Number

};

#endif // MYTHREAD_H
\ifndef MYTHREAD\u H
#定义MYTHREAD_H
#包括
#包括
类MyThread:publicqthread
{
Q_对象
公众:
显式MyThread(int-ID,QObject*parent=0);
无效运行();
信号:
无效错误(QTcpSocket::SocketError SocketError);
公众时段:
void readyRead();
无效断开连接();
公众时段:
QTcpSocket*插座;
int socketDescriptor;//套接字ID号
};
#endif//MYTHREAD\H

错误消息准确地告诉您问题所在。您将成员变量声明为插槽,但它们不是。我将按如下方式更改您的课程:

class MyThread : public QThread
{
    Q_OBJECT
    [..]

private: // or public:
    QTcpSocket *socket;
    int socketDescriptor;
};

您似乎没有正确地将Qt与线程一起使用。为什么要继承QThread而不是将任务移动到一个库存QThread?此外,您没有显示代码的基本部分,如线程管理、连接等。我只是想学习一个教程。声明类成员变量
qtcsocket*socket
intsocketdescriptor
作为公共插槽?为什么?好吧,别学那个教程。忘记它的存在。认真地我还有另一个答案,接得好;这可能是上面同一行的复制/粘贴问题。虽然,这可能不是唯一的问题^^