当前位置: 首页 > news >正文

湛江做网站电话装修公司网站如何做网络推广

湛江做网站电话,装修公司网站如何做网络推广,仙居网站建设贴吧,江西建设质量安全监督网站Qt中线程的使用 在qt中线程的使用有两种方式#xff0c;第一种就是创建一个类继承QObject类#xff0c;之后使用moveToThread函数将线程添加到类中。另一种就是创建一个类继承QThread类#xff0c;在类中实现run函数。 第一种方式#xff1a; 1、首先创建一个自定义的类…Qt中线程的使用 在qt中线程的使用有两种方式第一种就是创建一个类继承QObject类之后使用moveToThread函数将线程添加到类中。另一种就是创建一个类继承QThread类在类中实现run函数。 第一种方式 1、首先创建一个自定义的类继承QObject。 #ifndef THREAD001_H #define THREAD001_H#include QObjectclass MyThread : public QObject {Q_OBJECT public:explicit MyThread(QObject *parent nullptr);void stop();private:bool state false;signals:public slots:void slotsFun(QString number); };#endif // THREAD001_H#include mythread.h #include QDebug #include QThread MyThread::MyThread(QObject *parent) : QObject(parent) {}void MyThread::stop() {state false;qDebug()Thread001::stop() 当前线程号 QThread::currentThreadId(); }void MyThread::slotsFun(QString number) {qDebug()父线程号number;qDebug()当前线程号 QThread::currentThreadId();state true;static int i 0;while(state){qDebug()i的数值i state state;i;QThread::sleep(1);} } 以上代码就是创建的类在上述的代码中能看到在头文件中定义了一个slotsFun()槽函数、一个stop()公共函数和一个state私有的成员变量。 slotsFun()槽函数就是我们最终要执行的线程函数。 state私有的成员变量是为了设置线程函数的循环限制当我们要停止线程退出的时候可以使用公共函数stop设置state为false这样就退出了线程函数。 这里的stop函数不属于线程而是属于主线程。 2、启动线程 当我们定义好了线程类之后就可以在需要启动线程的地方启动线程了。 QThread* m_thread nullptr;//这个是qt的线程类MyThread* m_mythread nullptr;//这个是我们自定义的线程类void MainWindow::on_btn_create_clicked() {if(m_thread nullptr){m_thread new QThread();//实例化线程对象m_mythread new MyThread();//实例化自定义的线程对象m_mythread-moveToThread(m_thread);//线程绑定//线程结束函数信号槽用于当线程结束之后释放资源。connect(m_thread,QThread::finished,this,[](){qDebug()m_thread001 线程执行结束;m_thread-deleteLater(); //释放线程资源m_thread nullptr;m_mythread-deleteLater();//释放自定定义的线程类资源m_mythread nullptr;});//启动线程之后线程发出的信号connect(m_thread,QThread::started,this,[](){qDebug()m_thread001 线程执行启动;});//调用线程函数线程启动之后还需要调用一下自定义线程类中槽函数connect(this,MainWindow::startThreadFun,m_mythread,MyThread::slotsFun);}}void MainWindow::on_btn_start_clicked() {//启动线程m_thread-start();qDebug()主线程idQThread::currentThreadId();//发送信号调用槽函数emit startThreadFun(看上面的主线程id); }3、关闭线程 关闭线程小编使用了很多方式都没有达到理想的状态首先是使用QThread中的**terminate**()函数此函数关闭之后线程中的资源很难释放。因为他是强制的线程函数无论执行到哪里了都会强制退出线程。 后面就换了中方式先使用自定义线程类函数退出线程函数之后再关闭线程类这样就能很好的释放线程资源了。 void MainWindow::on_btn_stop_clicked() {m_mythread-stop();m_thread-quit();m_thread-wait(); }这里有个小知识点就是假如我们在自定义的类中定义了俩个槽函数并且都是在线程启动之后发出信号那么这两槽函数都是此线程的线程函数只不过是按发送信号的顺序执行的。 第二种方式 1、创建线程类继承QThread类 #ifndef MYTHREAD2_H #define MYTHREAD2_H#include QThread #include QDebug class MyThread2 : public QThread { public:MyThread2();void stop();void run() override; private:bool state false; };#endif // MYTHREAD2_H #include mythread2.hMyThread2::MyThread2() {}void MyThread2::stop() {state false;qDebug()Thread001::stop() 当前线程号 QThread::currentThreadId(); }void MyThread2::run() {qDebug()当前线程号 QThread::currentThreadId();state true;static int i 0;while(state){qDebug()slotsFuni的数值i state state;i;QThread::sleep(1);}}以上代码中run就是继承QThread中的虚函数run。使用这中方式启动线程直接调用start函数即可。 2、启动 void MainWindow::on_btn_start_clicked() {if(m_mythread2 nullptr){m_mythread2 new MyThread2();connect(m_mythread2,QThread::finished,this,[](){qDebug()m_mythread2 线程执行结束;m_mythread2-deleteLater();m_mythread2 nullptr;});}m_mythread2-start();//启动线程 }3、当run函数退出的是后线程就自动结束了。这里和第一种方式不太一样第一种方式需要使用Qthread中的quit和wait函数。
http://www.w-s-a.com/news/948324/

相关文章:

  • 国内最有趣的25个网站推广流程
  • 红河做网站抖音小程序怎么挂到抖音上
  • 高度重视机关门户网站建设外包
  • 网站里面送礼物要钱怎么做代码网站开发怎么对接客户
  • 泰州网站制作策划如何做网站需求
  • 门户网站优化报价软件技术公司
  • 怎样换网站logo公司名字大全集免费
  • 为网站网站做推广各类最牛网站建设
  • 网站用自己的电脑做服务器佛山做网站制作公司
  • 一个网站如何做cdn加速器如何上传网站数据库
  • 汝州住房和城乡建设局新网站营销网站定位
  • yy直播官网seo引擎优化是什
  • 做影视网站违法莫品牌营销是什么
  • 全网最稳最低价自助下单网站wordpress电影网站主题
  • 域名更换网站温州建设工程网站
  • 网站如何优化推广连锁店管理网站开发
  • 伊宁市做网站功能性质网站
  • 北京哪个网站制作公司优化大师免费安装下载
  • 同江佳木斯网站设计做网站联系电话
  • 设计上海展会2023seo网站模板下载
  • 开发一个卖东西的网站多少站长工具永久
  • 公司网站怎么突然多了好多友情链接如何删除宁波有几个区
  • 临沂seo网站推广wordpress新编辑器
  • c2c网站设计店面logo设计制作
  • 网站建设任务执行书重庆今天新闻事件
  • 怎样发布自己的网站南宁制作网站公司
  • wordpress装多站点百度查一下
  • 怎么优化一个网站搭建网站免费空间
  • 山东建设和城乡建设厅注册中心网站首页wordpress安装教材
  • 个人风采网站制作毕节网站开发公司电话