qt创建线程 实用的方法

qt创建线程 实用的方法,第1张

1、 继承QThread 重写虚函数void run()

启动 start()

2、

QThread *p = new QThread

this->moveToThread(p)

connect(p, SIGNAL(started()), this, slot( xxfun() ))

p->start()

3、QtConcurrent::run( )

void printMes(bool *TF )

{

        qDebug()<<"pprintMes(char*mes)  thread : "<

        qDebug()<<*TF

}

void sendQThread::printString( QString str )

{

qDebug()<<str << QThread::currentThreadId()

  }

3.1创建

        m_threadFlag= true

        QtConcurrent::run(printMes, &m_threadFlag)

3.2创建

        QString str = QString("我去%1").arg(i)

        QtConcurrent::run(this, &sendQThread::printString, str )

QString hello(QString name)

 qDebug() <<"Hello"<<name <<"from"<<QThread::currentThread()

return name

}

//掉用处QFuture f1 = QtConcurrent::run(hello, QString("Alice"))QFuture f2 = QtConcurrent::run(&threadPool, hello, QString("Bob"))

QT线程是独立的类:

在QT中添加C++类,头文件引用#include <QThread>类公开,这样写:

class XXXX:public QThread,类里面申明Q_OBJECT,直接写在里面。signals: XXX()这是你的订阅事件名。private:void run()这是run函数;public: int cona=3这是变量,一定要public。

cpp文件里引用头文件,run函数里面写方法:

void XXXX::run()

{

do

{

msleep(cona)

emit connec()

}while(true)

}

上面就是线程类了。现在我们在窗体中应用,先在头文件申明

头文件private: XXXX *thread1XXXX *thread2

构造函数中初始化他们

thread1=new XXXX()

thread1->cona=3

QObject::connect(thread1,SIGNAL(connec()),this,SLOT(XXX信号1()))

thread2=new XXXX()

thread2->cona=4

QObject::connect(thread2,SIGNAL(connec()),this,SLOT(XXX信号2()))

XXX信号1()是读A数据,XXX信号2()读B数据。

按钮1的信号槽里写方法同时进行每3秒读A、没4秒读B

thread1->start()

thread2->start()

要结束谁就用 xxxx->terminate()

看明白没?QT可不同与C++,你不熟悉编程环境,是很难理解的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11687887.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存