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

来源:互联网 发布:修改图片大小的软件 编辑:程序博客网 时间:2024/04/27 06:56

 

 

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

首先来看线程类: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_OBJECTpublic:    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

原创粉丝点击