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

微信h5在哪个网站做seo排名外包

微信h5在哪个网站做,seo排名外包,东莞塘厦网站制作,怎么开发微信公众号QT多线程 1.涉及到类和方法示例代码:未重写run函数 2.使用思路3.常用方法4.示例代码1:重写线程run函数现象: 5.示例代码2:多线程显示切换图片,使用公有方法现象: 1.涉及到类和方法 类:QThread 示…

QT多线程

  • 1.涉及到类和方法
    • 示例代码:未重写run函数
  • 2.使用思路
  • 3.常用方法
  • 4.示例代码1:重写线程run函数
    • 现象:
  • 5.示例代码2:多线程显示切换图片,使用公有方法
    • 现象:

1.涉及到类和方法

类:QThread

示例代码:未重写run函数

// widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QThread>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_btn_start_clicked();void on_btn_stop_clicked();private:Ui::Widget *ui;QThread *thread;
};
#endif // WIDGET_H// widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);thread = new QThread(this);
}Widget::~Widget()
{delete ui;
}//开启线程
void Widget::on_btn_start_clicked()
{//start源码会自动调用执行run,但QThread自带的run方法是空代码thread->start();
}//关闭线程--》终止线程
void Widget::on_btn_stop_clicked()
{//类似于pthread_cancelthread->terminate();//回收线程thread->wait();
}

2.使用思路

QT中多线程原理分析:
类比:linux中多线程 pthread_create( 线程的任务函数)
同理:QT中创建线程,任务函数也是需要程序员自己去写
[virtual protected] void QThread::run() //源码也是空的
virtual void QThread::run()
{
//空代码
}
第一步:自定义一个类继承QThread,然后重写父类的同名方法run()(此时程序员在run方法里面实现自己的代码逻辑)
如何在QT工程中添加新的自定义类?
方法:右键点击工程–》选择C++类
第二步:创建一个子类对象,调用start()方法就能自动开启一个线程
原理: start()方法开启线程,然后自动执行run函数

3.常用方法

(1)终止线程void QThread::terminate()
(2)回收线程bool QThread::wait(unsigned long time = ULONG_MAX)参数:time --》超时等待时间  
(3)延时函数//秒级延时[static] void QThread::sleep(unsigned long secs)//毫秒级延时[static] void QThread::msleep(unsigned long msecs) //微秒级延时[static] void QThread::usleep(unsigned long usecs)

4.示例代码1:重写线程run函数

//===================主窗口代码=================//
// widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <mythread.h>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_btn_start_clicked();void on_btn_stop_clicked();private:Ui::Widget *ui;myThread *custonThread;
};
#endif // WIDGET_H// widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);custonThread = new myThread;
}Widget::~Widget()
{delete ui;
}//开启线程
void Widget::on_btn_start_clicked()
{qDebug()<<"开启线程";custonThread->start();  //start源码会自动调用执行子类自己的run
}//关闭线程--》终止线程
void Widget::on_btn_stop_clicked()
{qDebug()<<"停止线程";custonThread->terminate(); //类似于pthread_cancelcustonThread->wait(); //回收线程
}//===================线程类代码=================//
// mythread.h
#ifndef MYTHREAD_H
#define MYTHREAD_H#include <QWidget>
#include <QThread>
#include <QDebug>class myThread : public QThread
{Q_OBJECT
public:explicit myThread(QWidget *parent = nullptr);//重写父类QThread的虚函数run,实现多态void run() override;
signals:};#endif // MYTHREAD_H// mythread.cpp
#include "mythread.h"myThread::myThread(QWidget *parent) : QThread(parent)
{}void myThread::run()
{while(1){qDebug()<<"hello world!";//sleep(1); //C语言库函数QThread::sleep(1);  //1秒//QThread::msleep(1); //1毫秒//QThread::usleep(1); //1微秒}
}

现象:

在这里插入图片描述

5.示例代码2:多线程显示切换图片,使用公有方法

//==================主窗口代码=====================//
// mainwidget.h
#ifndef MAINWIDGET_H
#define MAINWIDGET_H#include <QWidget>
#include <mythread.h>QT_BEGIN_NAMESPACE
namespace Ui { class mainWidget; }
QT_END_NAMESPACEclass mainWidget : public QWidget
{Q_OBJECTpublic:mainWidget(QWidget *parent = nullptr);~mainWidget();private slots:void on_btn_start_clicked();void on_btn_stop_clicked();private:Ui::mainWidget *ui;myThread *custonThread;
};
#endif // MAINWIDGET_H// mainwidget.cpp
#include "mainwidget.h"
#include "ui_mainwidget.h"mainWidget::mainWidget(QWidget *parent): QWidget(parent), ui(new Ui::mainWidget)
{ui->setupUi(this);custonThread = new myThread;//调用公有方法把ui中标签传递给线程custonThread->getLabel(ui->label);
}mainWidget::~mainWidget()
{delete ui;
}//开启线程
void mainWidget::on_btn_start_clicked()
{qDebug()<<"开启线程";custonThread->start();  //start源码会自动调用执行子类自己的run
}//关闭线程--》终止线程
void mainWidget::on_btn_stop_clicked()
{qDebug()<<"停止线程";custonThread->terminate(); //类似于pthread_cancelcustonThread->wait(); //回收线程
}//=================线程类代码====================//
// mythread.h
#ifndef MYTHREAD_H
#define MYTHREAD_H#include <QWidget>
#include <QThread>
#include <QDebug>
#include <QLabel>class myThread : public QThread
{Q_OBJECT
public:explicit myThread(QWidget *parent = nullptr);//重写父类QThread的虚函数run,实现多态void run() override;//接收主界面传递过来的标签void getLabel(QLabel *lb);private:QLabel *mylb; //保存传递过来的标签int n;QStringList piclist; //保存要显示的图片
};#endif // MYTHREAD_H// mythread.cpp
#include "mythread.h"
#include <QPixmap>myThread::myThread(QWidget *parent) : QThread(parent)
{n=0;piclist.append("C:/Users/LimingRong/Desktop/vm_shared/code/QT_proj/res/1.png");piclist.append("C:/Users/LimingRong/Desktop/vm_shared/code/QT_proj/res/2.png");piclist.append("C:/Users/LimingRong/Desktop/vm_shared/code/QT_proj/res/3.png");
}void myThread::run()
{while(1){QPixmap map(piclist[n]);map.scaled(mylb->width(),mylb->height());mylb->setScaledContents(true);mylb->setPixmap(map);QThread::sleep(1);  //1秒if(n<piclist.size()-1)n++;elsen=0;}
}void myThread::getLabel(QLabel *lb)
{mylb = lb;
}

现象:

请添加图片描述

http://www.dtcms.com/wzjs/409243.html

相关文章:

  • 网站开发流程指什么360提交网站收录入口
  • 织梦做信息分类网站seo综合查询平台
  • 营销型网站建设 价格培训心得体会总结简短
  • 重庆市哪个区最繁华衡阳seo优化报价
  • 新疆天力建设有限公司网站怎么网络推广
  • 马鞍山网站建设 明达推广方法
  • 勒流顺德网站建设网络优化seo
  • 门户网站 jsp品牌营销公司
  • 服装网站建设项目规划武汉网络推广自然排名
  • 科讯怎么建设网站最火的网络销售平台
  • 代码查询网站b站推广网站2022
  • 推销网站话术网络科技公司网站建设
  • 万州做网站多少钱b站推广网站入口202
  • 女子医院网站开发策略网络营销是什么工作主要干啥
  • 小型公司网站建设西安seo建站
  • 网站上的地图怎么做百度推广代运营公司
  • 乡村旅游网站开发深圳百度推广电话
  • 旅行社网站建设规划方案ciliba磁力猫
  • wamp 设置多个网站腾讯企业qq
  • 企业培训机构网站源码广州商务网站建设
  • 湘潭做网站选择磐石网络南宁seo计费管理
  • 影视网站模板怎么做线上营销渠道
  • 自己买个服务器做网站关键词推广方式
  • 做网站用上面软件写代码比较好中国最好的网络营销公司
  • wordpress pdf viewer宁波seo怎么做推广渠道
  • 望野王奉节县关键词seo排名优化
  • 18款禁用黄a免费新网站seo
  • 常平镇仿做网站老铁外链
  • 精品网站做爆款关键词优化一年多少钱
  • lamp网站开发黄金组...抖音推广公司