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

怎么用7牛云做网站seo优化交流

怎么用7牛云做网站,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/431899.html

相关文章:

  • 制作网站的收入来源于哪里北京seo营销培训
  • cn.wordpress谷歌seo建站
  • 百度上可以做中英文网站吗网页模板大全
  • 建设网站团队怎么建立一个自己的网站
  • 公交公司网站建设的意义北京百度总部
  • 网站导航是怎么做的爱链网买链接
  • 网站编程培训班长沙官网优化公司
  • 机械设备企业网站源码央视新闻今天的内容
  • 单机游戏大全网站开发网络营销推广的
  • 最专业的网站建设seo优化服务公司html制作网站
  • 东莞个人免费建网站品牌推广方案思维导图
  • 中达世联网站建设有什么平台可以推广信息
  • 青岛网站推广引流今日新闻热点
  • 网站建设流程周期seo推广费用需要多少
  • web前端开发就业windows11优化大师
  • 网站建设能挣钱在线培训系统app
  • 网站模板源码免费下载深圳网络推广大师
  • 商城网站验收标准seo公司怎样找客户
  • 苏州手机网站今天上海重大新闻事件
  • 建设银行官网招聘网站网络推广是做什么的
  • 网站开发费用成本表网络推广哪个平台效果最好
  • 学校网站开发需求扬州百度关键词优化
  • 创意网站开发企业app推广平台网站
  • 自己做的网站百度收索不到合肥百度关键词优化
  • 网站建设的市场有多大苏州网站seo服务
  • 商城网站建设设计介绍网络营销策划的基本原则是什么
  • 东莞市网站建设怎么样全网seo
  • 外贸网站faq百度云官网登录首页
  • 做通风工程上哪个网站发布深圳优化公司排名
  • 电商旅游网站策划书写软文推广