1: Object::connect: No such signal....
解决办法:新写的类必须带有 Q_OBJECT
另外传递参数不能带有参数名字
connect (this, SIGNAL(dataWrite(const QByteArray ) ), socket, SLOT(WriteToData(const QByteArray ) ) );
2:在 Qt 编写过程中,如多线程使用信号槽时,需要添加 Q_OBJECT,但是在添加之后发现编译老会出错。如下:
在 Qt 编写过程中,如多线程使用信号槽时,需要添加 Q_OBJECT,但是在添加之后发现编译老会出错。如下:
#include <QTcpServer>
#include <QThread>
#include <QList>
#include "tcpsocket.h"
class TcpServer : public QTcpServer
{
Q_OBJECT
public:
explicit TcpServer(const std::string &ip, int port, QObject *parent = NULL);
~TcpServer();
signals:
void dataWrite( const QByteArray );
protected:
void incomingConnection(qintptr socketDescriptor);
private slots:
void disconnectSlot();
private:
QList<TcpSocket*> m_socketList;
};
编译后提示 undefined reference to vtable for "xxxx" 的错误问题。
出现该错误的原因是此时的 Q_OBJECT 是半途加入的,
我们需要让项目重新加载编译,解决的办法是直接在 .pro 文件中随便改动一点东西,
即使是随便加个空格都可以,此时再编译就可以通过。