我们先定义一个线程类类:textTread
texttread.h
04.#include <<a href="http://blog.51cto.com/user_index.php?action=addblog_new" target="_blank" class="keylink">QT</a>hread>
05.
06.class textTread : public <a href="http://blog.51cto.com/user_index.php?action=addblog_new" target="_blank" class="keylink">QT</a>hread
07.{
08.Q_OBJECT
09.public:
10.textTread();
11.void run();
12.signals:
13.void sendGUIThreadData(QString str); //向主线程通信的信号
14.public slots:
15.void GetGUIThreadID(int mThreadID); //接受主线程通讯过来数据的槽
16.private:
17.int ThreadID;
18.};
19.
20.#endif // TEXTTREAD_H
再来看 texttread.cpp
01.#include "texttread.h"
02.#include <qDebug>
03.textTread::textTread()
04.{
05.}
06.void textTread::run()
07.{
08.qDebug() << tr("Thread is Open,ThreadID : %1").arg(ThreadID);
09.//You can do anything in here 嗨嗨拽两句鸟文
10.}
11.void textTread::GetGUIThreadID(int mThreadID) //接受主线程通讯过来的数据
12.{
13.ThreadID = mThreadID;
14.}
再看在GUI主线程实现50个线程的代码:
01.const int LENGTH = 50;
02.
03.textTread *tread;
04.tread = new textTread[LENGTH];
05.for(int i=0;i<=LENGTH-1;i++){
06.connect(this,SIGNAL(SendGUIThreadID(int)),&tread[i],SLOT(GetGUIThreadID(int)));
07.connect(&tread[i],SIGNAL(sendGUIThreadData(QString)),this,SLOT(GetGUIThreadData(QString)));
08.emit SendGUIThreadID(i);
09.tread[i].start();
10.}
声明类的指针数组。
然后循环绑定信号与槽,最后循环用Start()运行线程,注意此处new 出的类数组,后面用的是.而不是-> 。
原文:http://11496263.blog.51cto.com/11486263/1881798