首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

qt线程的有关问题~

2013-12-26 
qt线程的问题~~请问高手,QTcpSocket如何在一个线程(QThread)中ReadData?[解决办法]CSocketApp::CSocketApp

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);//这里是最低优先级宏,具体我记不清了,你查查手册,就知道了

热点排行