欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

qt线程的有关问题~

更新时间: 2014-01-05 02:43:32 责任编辑: Author_N1

 

qt线程的问题~~
请问高手,QTcpSocket如何在一个线程(QThread)中ReadData?
--参考方法--
CSocketApp::CSocketApp()
{
    pServer = new QLocalServer(this);
    connect(pServer, SIGNAL(newConnection()), this, SLOT(rxNewConnection()));
    pServer->listen(DATA_PROCESS_NAME);
}


void CSocketApp::rxNewConnection()
{
    pSocket = pServer->nextPendingConnection();
    if (pSocket != NULL)
    {
        connect(pSocket, SIGNAL(readyRead()), this, SLOT(rxMessage()));
        pSocket->waitForReadyRead(1000);
        connect(pSocket, SIGNAL(disconnected()), pSocket, SLOT(deleteLater()));
    }
}
--参考方法--
void rxMessage()

是你定义的一个槽函数,接收socket发来的消息


pSocket->read()
--参考方法--
朋友是这样的,才发送读数据通知,而数据是放在缓冲区中,这个读肯定是在us到ms级完成,我想影响到你数据刷新的可能是你对你的数据做了耗时的处理,为了不影响你界面刷新,你最好先把读出来的数据放到缓冲,通过QThread开启一个线程来处理该数据,注意该线程的优先级必须设置最低。

class CMyThread : public QThread
{
    public:
          static CMyThread *getInstance()
          {
               return &mSelf;
          }
          void run()
          {
               while(1)
               {
                   //处理缓冲数据,注意同步
               }
          }
private:
    static CMyThread mSelf;
}
CMyThread CMyThread::mSelf;


//启动
CMyThread *pThread = CMyThread::getInstance();
pThread->start(minlowest);//这里是最低优先级宏,具体我记不清了,你查查手册,就知道了
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:43:32
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/13552/
本文WWW.DOC100.NET DOC100.NET版权所有。