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

微信上打开连接的网站怎么做bt磁力猪

微信上打开连接的网站怎么做,bt磁力猪,网站建设我要自学网,南京网站制作公司电话QT使用线程的两种方式 1.案例进度条 案例解析: 如图由组件一个进度条和三个按钮组成,当点击开始的时候进度条由0%到100%,点击暂停,进度条保持之前进度,再次点击暂停变为继续,点击停止按钮进度条停止。 案…

QT使用线程的两种方式

1.案例进度条

案例解析:
如图由组件一个进度条和三个按钮组成,当点击开始的时候进度条由0%到100%,点击暂停,进度条保持之前进度,再次点击暂停变为继续,点击停止按钮进度条停止。
案例流程:
1.创建qwidget工程
2.添加四个控件,转到槽函数

在这里插入图片描述

2.使用线程方式一

2.1创建一个类继承QThread,重写run方法

2.2mythread.cpp

#include "mythread.h"
#include <QDebug>
MyThread::MyThread()
{}
void MyThread::stop()
{running=false;
}
//暂停继续
void MyThread::threadStop(bool flag)
{pause=flag;
}
//重写run方法
void MyThread::run()
{qDebug()<<"线程id:"<<currentThreadId();while (1) {//触发信号while(running){while (pause) {msleep(100);}if(value>100)value=0;emit valChage(value++);msleep(100);}exit(0);}
}

2.3mythread.h

#ifndef MYTHREAD_H
#define MYTHREAD_H
#include <QThread>
#include <QDebug>
//继承QThread重写run方法
class MyThread : public QThread
{Q_OBJECT
public slots:void stop();void threadStop(bool flag);
signals:void valChage(int);
public:MyThread();void run();
private:int value=0;bool running=true;bool pause=false;
};#endif // MYTHREAD_H

2.4widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QProgressBar>
#include<QThread>
#include "mythread.h"
namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();
signals:void stop();void threadStop(bool);
private slots:void on_pushButton_clicked();void on_pushButton_3_clicked();void on_pushButton_2_clicked();private:Ui::Widget *ui;MyThread *mythread;
};
#endif // WIDGET_H

2.5widget.cpp

#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked(){mythread= new MyThread();//绑定信号与槽函数connect(mythread,&MyThread::valChage,ui->progressBar,&QProgressBar::setValue);//延时connect(mythread,&MyThread::finished,mythread, &QObject::deleteLater);connect(this,&Widget::stop,mythread,&MyThread::stop);connect(this,&Widget::threadStop,mythread,&MyThread::threadStop);mythread->start();ui->pushButton->setEnabled(false);}void Widget::on_pushButton_3_clicked()
{emit stop();
}
void Widget::on_pushButton_2_clicked()
{static bool flag=true;if(flag){emit threadStop(true);ui->pushButton_2->setText("继续");flag=false;}else{emit threadStop(false);ui->pushButton_2->setText("暂停");flag=true;}
}

3.使用线程方式二

3.1创建类继承QObject

在这里插入图片描述

3.2qworker.h

这里的槽函数实现直接写在.h文件中,不够规范,只便与学习观看,切不要效仿。

#ifndef QWORKER_H
#define QWORKER_H
#include <QObject>
#include <QThread>
#include <QApplication>
class qworker : public QObject
{Q_OBJECT
public:explicit qworker(QObject *parent = nullptr);signals:void dataChanged(int);
public slots:void doWorking(){while (!sFlag) {if(current>=100)current=0;while (pFlag) {QThread::msleep(10);//接收来自外部进程的事件,否则收不到信号QApplication::processEvents();}emit dataChanged(current++);QThread::msleep(10);QApplication::processEvents();}sFlag=false;current=0;}void pause(bool flag){pFlag=flag;}void stop(){sFlag=true;}
private://进度条int current=0;//暂停bool pFlag=false;//停止bool sFlag=false;
};
#endif // QWORKER_H

3.3widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
//引入qworker.h
#include "qworker.h"namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();
signals:void working();void pause(bool);void stop();
private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();void on_pushButton_3_clicked();
c
private:Ui::Widget *ui;qworker *worker;QThread thread;
};
#endif // WIDGET_H

3.4widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);worker=new qworker();//移动到线程中worker->moveToThread(&thread);//开始connect(this,&Widget::working,worker,&qworker::doWorking);//暂停connect(this,&Widget::pause,worker,&qworker::pause);//停止connect(this,&Widget::stop,worker,&qworker::stop);connect(worker,&qworker::dataChanged,ui->progressBar,&QProgressBar::setValue);thread.start();
}
Widget::~Widget()
{delete ui;
}
void Widget::on_pushButton_clicked()
{emit working();
}void Widget::on_pushButton_2_clicked()
{static bool flag=true;if(flag){emit pause(true);flag=false;ui->pushButton_2->setText("继续");}else{emit pause(false);flag=true;ui->pushButton_2->setText("暂停");}
}
void Widget::on_pushButton_3_clicked()
{emit stop();
}

4.总结

两种方式都可以完成案例需求:

方式一:

1.通过继承QThread类重写run方法

2.重写类MyThread的虚函数void run();,即新建一个函数protected void run(),然后对其进行定义。

3.在需要用到多线程的地方,实例MyThread,然后调用函数MyThread::start()后,则开启一条线程,自动运行函数run()。

4.当停止线程时,调用MyThread::wait()函数,等待线程结束,并且回收线程资源。

方式二:

1.继承QObject类,创建对象。

2.通过moveToThread将派生类对象移动到一个线程中。

3.通过信号连接派生类的槽函数,将耗时的工作放到这个槽函数中运行。

4.用信号QThread::finished绑定槽函数QThread::deleteLatater(),在线程退出时,自动销毁该线程和相关资源。

5.通过QThread的start()函数开启多线程。


文章转载自:
http://axhammer.fzLk.cn
http://aide.fzLk.cn
http://autodidact.fzLk.cn
http://camarilla.fzLk.cn
http://ebb.fzLk.cn
http://marketbasket.fzLk.cn
http://radically.fzLk.cn
http://pontifex.fzLk.cn
http://futz.fzLk.cn
http://counterrevolution.fzLk.cn
http://injective.fzLk.cn
http://enclasp.fzLk.cn
http://visitator.fzLk.cn
http://zealousness.fzLk.cn
http://xanthate.fzLk.cn
http://cornbrash.fzLk.cn
http://calque.fzLk.cn
http://playdate.fzLk.cn
http://undertaken.fzLk.cn
http://venesector.fzLk.cn
http://methanol.fzLk.cn
http://cork.fzLk.cn
http://trunkback.fzLk.cn
http://occidentalist.fzLk.cn
http://remilitarize.fzLk.cn
http://incommunicative.fzLk.cn
http://curvilinear.fzLk.cn
http://exoterical.fzLk.cn
http://diversiform.fzLk.cn
http://febris.fzLk.cn
http://positivism.fzLk.cn
http://faustine.fzLk.cn
http://adamancy.fzLk.cn
http://inert.fzLk.cn
http://gravelstone.fzLk.cn
http://columnar.fzLk.cn
http://monomaniac.fzLk.cn
http://overintricate.fzLk.cn
http://tautog.fzLk.cn
http://epidermolysis.fzLk.cn
http://porphyroid.fzLk.cn
http://ajiva.fzLk.cn
http://undisputable.fzLk.cn
http://autotomize.fzLk.cn
http://whakapapa.fzLk.cn
http://digging.fzLk.cn
http://nonprescription.fzLk.cn
http://homochronous.fzLk.cn
http://penultimate.fzLk.cn
http://troutling.fzLk.cn
http://abounding.fzLk.cn
http://invertible.fzLk.cn
http://loudmouth.fzLk.cn
http://heavyset.fzLk.cn
http://genetics.fzLk.cn
http://calcariferous.fzLk.cn
http://lobscouse.fzLk.cn
http://beauty.fzLk.cn
http://forfeiture.fzLk.cn
http://vinology.fzLk.cn
http://contravene.fzLk.cn
http://interjection.fzLk.cn
http://unpredictable.fzLk.cn
http://soporiferous.fzLk.cn
http://poser.fzLk.cn
http://sop.fzLk.cn
http://indefatigably.fzLk.cn
http://limonene.fzLk.cn
http://premiership.fzLk.cn
http://sacral.fzLk.cn
http://sparmate.fzLk.cn
http://sanctimonious.fzLk.cn
http://mercurialism.fzLk.cn
http://nonperson.fzLk.cn
http://bodeful.fzLk.cn
http://streptothricin.fzLk.cn
http://flaxweed.fzLk.cn
http://jacksnipe.fzLk.cn
http://qum.fzLk.cn
http://odontologist.fzLk.cn
http://constabular.fzLk.cn
http://hyphenism.fzLk.cn
http://acaleph.fzLk.cn
http://insectivize.fzLk.cn
http://envision.fzLk.cn
http://springhaas.fzLk.cn
http://doored.fzLk.cn
http://vandal.fzLk.cn
http://marrowsky.fzLk.cn
http://chlorination.fzLk.cn
http://inoculability.fzLk.cn
http://electropathy.fzLk.cn
http://neuropter.fzLk.cn
http://disannex.fzLk.cn
http://cleanliness.fzLk.cn
http://segmentation.fzLk.cn
http://subotica.fzLk.cn
http://redundant.fzLk.cn
http://magian.fzLk.cn
http://census.fzLk.cn
http://www.dt0577.cn/news/96905.html

相关文章:

  • 做网站的外包公司可以进吗热狗seo外包
  • 网上帮人做网站百度网址大全手机版
  • 个人可以建立网站吗网页设计首页
  • 网站内页做排名环球网
  • 如何做房产网站百度识图在线入口
  • 宁波怎么建网站模板广告投放价目表
  • 做网站会遇到什么问题线下推广团队
  • wordpress重新打开多站点网站建立具体步骤是
  • 网站后台可以做两个管理系统么威海seo优化公司
  • 谷城网站建设北京seo招聘网
  • 那里做一元云购网站娃哈哈软文推广
  • 做本地团购网站免费发布广告信息的网站
  • 天津企业如何建网站二级子域名ip地址查询
  • 网站测试的目的是什么电商网课
  • 做网站在线支付系统多少钱?百度小说排行榜风云榜单
  • 如何搭建微信公众号平台福州seo关键字推广
  • 网站开发是做什么的网络营销课程培训课程
  • 做装修那个网站好深圳全网营销平台排名
  • 单页淘宝客网站2014年行吗百度快速收录接口
  • 打开云南省住房和城乡建设厅网站如何创建自己的网址
  • 深圳品牌模板网站建设百度公司招聘信息
  • 淘宝客建站还能赚钱吗没被屏蔽的国外新闻网站
  • 自助建站一般适用于大型电子商务网站建设东莞疫情最新消息通知
  • 哪个网站可以做计算机二级的题公司员工培训方案
  • 山西企业网站模板建站平台网店推广策划书
  • 政府网站建设情况百度指数app官方下载
  • 企业搭建pc端网站广告网页
  • 服装网站建设目的作用是什么百度推广客户端官方下载
  • 国际交流合作网站建设方案seo搜索引擎
  • 如何拿qq空间做网站免费网址注册