我写了个通过线程连接服务端的例子,遇到如下问题,在线程里连接服务端时QTcpSocket好像无法产生connected信号。
main.c:
#include <QApplication>
#include "dialog1.h"
int main(int argc, char *argv[])
{
// Q_INIT_RESOURCE(application);
QApplication app(argc, argv);
QFont font1("unifont",8,8);
//QFont font1("宋体");
app.setFont(font1);
Dialog1 dlg;
dlg.show();
return app.exec();
}
dialog1.c:
#include <QtGui>
#include <QtNetwork>
#include "dialog1.h"
#include "QProtocolMuxe1x.h"
QProtocolMuxe1x muxe1;
QTcpSocket *st;
Dialog1::Dialog1()
{
bool rc=0;
ui.setupUi(this);
st=new QTcpSocket;
rc=connect(st, SIGNAL(connected()), this, SLOT(socketConnected()));
st->connectToHost("192.168.2.71",2065);
}
void Dialog1::socketConnected()
{
qDebug("socket Connected\n");
}
void Dialog1::on_pushButton_clicked()
{
qDebug("button\n");
muxe1.start();
}
在dialog1.c中直接连接服务端时可以收到connected信号进入槽socketConnected
而我在线程的run函数中执行同样的过程
tcpSocket=new QTcpSocket;
rc=connect(tcpSocket, SIGNAL(connected()), this, SLOT(TcpConnected()));
tcpSocket->connectToHost("192.168.2.71",2065);
这时就无法进入线程中的槽TcpConnected(),但这时确实是已经连接上了
求教高手,为何在线程中tcpSocket的connected信号未生成,或生成了为何没能进入TcpConnected槽
[ 此贴被XChinux在2006-11-16 23:19重新编辑 ]