请教qt线程中emit问题

YIHUALC 2013-05-03 09:52:36
大家好,我在qt线程中用emit自定义信号mysignal(),后面连接槽sendmessage(),槽函数始终不会执行。现确定槽函数是没有问题的,请路过的大侠帮忙看看,谢谢!附上部份代码

.h文件:

extern int alerting;

class Thread_Socket : public QThread
{
Q_OBJECT
public:
Thread_Socket();
void run();

private:
QTcpSocket *tcpSocket;
QString message; //存放从服务器接收到的字符串

public slots:
void sendMessage();
void displayError(QAbstractSocket::SocketError);

signals:
void mysignal();
};

.cpp文件:
#include "thread_socket.h"
#include <QDebug>
int alerting = 1;

Thread_Socket::Thread_Socket()
{

}

void Thread_Socket::run()
{
if (alerting < 10)
emit mysignal();
tcpSocket = new QTcpSocket(this);
tcpSocket->abort(); //取消已有的连接
tcpSocket->connectToHost(QHostAddress::LocalHost,6666);
connect(this,SIGNAL(mysignal()),this,SLOT(sendMessage()));
}


void Thread_Socket::sendMessage()
{
qDebug() << "why why why";
char *p = "hello";
tcpSocket->write(p);

}
...全文
4359 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xucong222689 2013-05-03
  • 打赏
  • 举报
回复

void Thread_Socket::run()
{
     connect(this,SIGNAL(mysignal()),this,SLOT(sendMessage()));
     if (alerting < 10)
         emit mysignal();
     tcpSocket = new QTcpSocket(this);
     tcpSocket->abort(); //取消已有的连接
     tcpSocket->connectToHost(QHostAddress::LocalHost,6666);
}
这样试试
sanshui 2013-05-03
  • 打赏
  • 举报
回复
信号连接connect函数有第5个参数需要设置 你可以看看参考文档,默认是线程内的

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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