QT多线程类数组同时开启几十个线程

 

 

教程简单明了,一看就懂。

首先来看线程类:textTread

texttread.h

#ifndef TEXTTREAD_H
#define TEXTTREAD_H

#include <<A class=keylink href="http://www.it165.net/pro/pkqt/" target=_blank>QT</A>hread>

class textTread : public <A class=keylink href="http://www.it165.net/pro/pkqt/" target=_blank>QT</A>hread
{
    Q_OBJECT
public:
    textTread();
    void run();
signals:
    void sendGUIThreadData(QString str);  //向主线程通信的信号
public slots:
    void GetGUIThreadID(int mThreadID);  //接受主线程通讯过来数据的槽
private:
    int ThreadID;
};

#endif // TEXTTREAD_H


再来看 texttread.cpp

 

#include "texttread.h"
#include <qDebug>
textTread::textTread()
{
}
void textTread::run()
{
    qDebug() << tr("Thread is Open,ThreadID : %1").arg(ThreadID);
    //You can do anything in here   嗨嗨拽两句鸟文
}
void textTread::GetGUIThreadID(int mThreadID)  //接受主线程通讯过来的数据
{
    ThreadID = mThreadID;
}


再看在GUI主线程实现50个线程的代码:

const int LENGTH = 50;

textTread *tread;
    tread = new textTread[LENGTH];
    for(int i=0;i<=LENGTH-1;i++){
        connect(this,SIGNAL(SendGUIThreadID(int)),&tread[i],SLOT(GetGUIThreadID(int)));
        connect(&tread[i],SIGNAL(sendGUIThreadData(QString)),this,SLOT(GetGUIThreadData(QString)));
        emit SendGUIThreadID(i);
        tread[i].start();
    }


 

声明类的指针数组。

然后循环绑定信号与槽,最后循环用Start()运行线程,注意此处new 出的类数组,后面用的是.而不是-> 。

 

原创:转载请注明出处:http://www.it165.net/pro/html/201204/2247.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值