首页 > 代码库 > QT多线程类数组同时开启几十个线程
QT多线程类数组同时开启几十个线程
我们先定义一个线程类类:textTread
texttread.hview source#define 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://www.mamicode.com/
"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.cppview sourceprint?
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个线程的代码:view sourceprint?
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 出的类数组,后面用的是.而不是-> 。
QT多线程类数组同时开启几十个线程