• 4162阅读
  • 1回复

求教高手帮忙,急! [复制链接]

上一主题 下一主题
离线njjyj
 
只看楼主 倒序阅读 楼主  发表于: 2006-11-01
我写了个通过线程连接服务端的例子,遇到如下问题,在线程里连接服务端时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重新编辑 ]
离线wuliang_227
只看该作者 1楼 发表于: 2006-11-01
想要使信号和槽起作用,必须使用Q_OBJECT这个宏,而且在QT4之前的版本,信号和槽只能在同一线程中起作用.
快速回复
限100 字节
 
上一个 下一个