急求!!qt找不到信号槽函数!

2013-11-27 01:22:20
本渣周五要交大作业了。。到今天还没搞定socket...求各位大神帮忙

(在qt4 那本书上的关于tcp的范例)

我派生了一个继承QTcpSocket的类 MySocket

然后在Mysocket的构造函数里面连接了readyrad和槽。

编译通过。但是运行的时候告诉我:Object::connect: No such slot QTcpSocket::wtf() in mysocket.cpp:8

!!!这是为什么呢!

mysocket.h
#ifndef MYSOCKET_H
#define MYSOCKET_H

#include <QTcpSocket>

class MySocket : public QTcpSocket
{
public:
MySocket();

private slots:
void readClient();
void wtf();


private:
void sentResult();

quint16 nextBlockSize;
};

#endif // MYSOCKET_H


mysocket.cpp
#include <QtNetwork>
#include "mysocket.h"

MySocket::MySocket()
{

// connect(this, SIGNAL(disconnected()), this, SLOT(deleteLater()));
connect(this, SIGNAL(readyRead()), this, SLOT(wtf()));

nextBlockSize = 0;
}


void MySocket::wtf()
{
qDebug()<<"??";
QDataStream in(this);
in.setVersion(QDataStream::Qt_4_7);


if (nextBlockSize == 0) {
if (bytesAvailable() < sizeof(quint16))
return;
in >> nextBlockSize;
}

if (bytesAvailable() < nextBlockSize)
return;


QString temp;
in >> temp;
qDebug()<<temp;

QDataStream out(this);
out << quint16(0xFFFF);
close();
}

void MySocket::sentResult()
{
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_7);


out.device()->seek(0);
out<<quint16(block.size()-sizeof(quint16));
write(block);
}
...全文
736 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
donwmufromdying 2013-12-04
  • 打赏
  • 举报
回复
缺少宏定义 Q_OBJECT
victor_woo 2013-12-03
  • 打赏
  • 举报
回复
引用 2 楼 chenlingzhen 的回复:
缺少宏定义 Q_OBJECT
clz2012 2013-11-28
  • 打赏
  • 举报
回复
引用 4 楼 ying_593254979 的回复:
[quote=引用 2 楼 chenlingzhen 的回复:] 缺少宏定义 Q_OBJECT
没有这个宏。[/quote] 要使用信号槽就得在类定义的时候加入Q_OBJECT,要不就得用 QObject::connect
ying_593254979 2013-11-28
  • 打赏
  • 举报
回复
引用 2 楼 chenlingzhen 的回复:
缺少宏定义 Q_OBJECT
没有这个宏。
卢林清 2013-11-28
  • 打赏
  • 举报
回复
引用 2 楼 chenlingzhen 的回复:
缺少宏定义 Q_OBJECT
就是这个原因
clz2012 2013-11-28
  • 打赏
  • 举报
回复
引用 6 楼 ying_593254979 的回复:
[quote=引用 5 楼 chenlingzhen 的回复:] [quote=引用 4 楼 ying_593254979 的回复:] [quote=引用 2 楼 chenlingzhen 的回复:] 缺少宏定义 Q_OBJECT
没有这个宏。[/quote] 要使用信号槽就得在类定义的时候加入Q_OBJECT,要不就得用 QObject::connect[/quote]不对啊。 这个宏跟QObject::connect没什么关系。可以看一下Qt元对象机制。这个宏和moc编译器会生成一些moc开头的文件。你的槽函数是在那个文件中调用的。[/quote] 反正自定义的QT类如果要使用信号槽就把Q_OBJECT加上,不加八成出问题。
ying_593254979 2013-11-28
  • 打赏
  • 举报
回复
引用 5 楼 chenlingzhen 的回复:
[quote=引用 4 楼 ying_593254979 的回复:] [quote=引用 2 楼 chenlingzhen 的回复:] 缺少宏定义 Q_OBJECT
没有这个宏。[/quote] 要使用信号槽就得在类定义的时候加入Q_OBJECT,要不就得用 QObject::connect[/quote]不对啊。 这个宏跟QObject::connect没什么关系。可以看一下Qt元对象机制。这个宏和moc编译器会生成一些moc开头的文件。你的槽函数是在那个文件中调用的。
绝版紫太狼 2013-11-27
  • 打赏
  • 举报
回复
connect可这样写的?发送接收收一样的
clz2012 2013-11-27
  • 打赏
  • 举报
回复
缺少宏定义 Q_OBJECT
dext 2013-11-27
  • 打赏
  • 举报
回复
clean了 重新 qmake make 一下

16,213

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧