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

web中英文网站怎么做百度云官网首页

web中英文网站怎么做,百度云官网首页,html网页设计期末大作业,公司做网站还是做appQt 多线程的两种实现方式 1. 从QThread类继承再重写 run 函数 实现流程: 继承自QThread类重写run函数,其中run函数里面的代码为线程的执行代码调用start函数启动线程 程序示例: WorkThread.h 文件 #ifndef WORKTHREAD_H #define WORKTH…

Qt 多线程的两种实现方式

1. 从QThread类继承再重写 run 函数

实现流程:

  1. 继承自QThread类
  2. 重写run函数,其中run函数里面的代码为线程的执行代码
  3. 调用start函数启动线程

程序示例:

  • WorkThread.h 文件
#ifndef WORKTHREAD_H
#define WORKTHREAD_H#include <QThread>class WorkThread : public QThread
{Q_OBJECT
public:explicit WorkThread(QObject *parent = nullptr);~WorkThread();public:void StartThread();void StopThread();void TerminateThread();protected:void run() override;				// 重写run函数private:void DealValue(int& nValue);signals:void SignalSendValue(QString, int);private:bool m_bRunFlag;};#endif // WORKTHREAD_H
  • WorkThread.cpp 文件
#include "WorkThread.h"
#include <QDebug>WorkThread::WorkThread(QObject *parent) : QThread(parent), m_bRunFlag(false)
{}WorkThread::~WorkThread()
{qDebug() << "Release WorkThread!";
}void WorkThread::StartThread()
{m_bRunFlag = true;start();
}void WorkThread::StopThread()
{m_bRunFlag = false;quit();wait();
}void WorkThread::TerminateThread()
{terminate();wait();
}void WorkThread::run()
{int nValue = 0;while (m_bRunFlag){DealValue(nValue);Qt::HANDLE hHandle = QThread::currentThreadId();emit SignalSendValue(QString::number(reinterpret_cast<quintptr>(hHandle), 16), nValue);QThread::msleep(100);}
}void WorkThread::DealValue(int &nValue)
{nValue++;if (nValue > 100)nValue = 1;
}
  • MainWindow.h文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include "WorkThread.h"QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:void SlotRecieveValue(QString strThreadID, int nValue);private slots:void on_btnStart_clicked();void on_btnStop_clicked();void on_btnTerminate_clicked();private:Ui::MainWindow *ui;WorkThread* m_pWorkThread;
};
#endif // MAINWINDOW_H
  • MainWindow.cpp文件
#include "MainWindow.h"
#include "ui_MainWindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);ui->labelMainThreadID->setText(QString("Thread ID = 0x%1").arg(QString::number(reinterpret_cast<quintptr>(QThread::currentThreadId()), 16)));m_pWorkThread = new WorkThread(this);connect(m_pWorkThread, &WorkThread::SignalSendValue, this, &MainWindow::SlotRecieveValue);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::SlotRecieveValue(QString strThreadID, int nValue)
{ui->labelValue->setText(QString("Thread ID = 0x%1, Value = %2").arg(strThreadID).arg(nValue));
}void MainWindow::on_btnStart_clicked()
{m_pWorkThread->StartThread();
}void MainWindow::on_btnStop_clicked()
{m_pWorkThread->StopThread();
}void MainWindow::on_btnTerminate_clicked()
{m_pWorkThread->TerminateThread();
}

2. 使用QObject::moveToThread()函数

实现流程:

  1. 创建一个工作类继承自QObject;
  2. 创建一个工作类线程对象和一个QThread对象,调用QObject::moveToThread()将工作对象移至线程中;
  3. 调用QThread对象的start函数,通过发送信号,后续工作对像的槽函数都会在独立的线程中执行;

文字解释流程相对比较抽象,下面看一个基于上面例子改造的示例;

  • ThreadWorker.h 文件 (线程工作者对象)
#ifndef THREADWORKER_H
#define THREADWORKER_H#include <QObject>class ThreadWorker : public QObject
{Q_OBJECTpublic:explicit ThreadWorker(QObject *parent = nullptr);~ThreadWorker();public:void SetRunFlag(bool bRunFlag);public slots:void SlotDoWork();          // 槽函数,通过外部的信号关联,其执行会在独立的线程中private:void DealValue(int& nValue);signals:void SignalDoWork();void SignalSendValue(QString, int);private:bool m_bRunFlag;
};#endif // THREADWORKER_H
  • ThreadWorker.cpp 文件
#include "ThreadWorker.h"
#include <QDebug>
#include <QThread>ThreadWorker::ThreadWorker(QObject *parent) : QObject(parent), m_bRunFlag(false)
{}ThreadWorker::~ThreadWorker()
{qDebug() << "Release ThreadWorker!";
}void ThreadWorker::SetRunFlag(bool bRunFlag)
{m_bRunFlag = bRunFlag;
}void ThreadWorker::SlotDoWork()
{int nValue = 0;while (m_bRunFlag){DealValue(nValue);Qt::HANDLE hHandle = QThread::currentThreadId();emit SignalSendValue(QString::number(reinterpret_cast<quintptr>(hHandle), 16), nValue);QThread::msleep(100);}
}void ThreadWorker::DealValue(int &nValue)
{nValue++;if (nValue > 100)nValue = 1;
}
  • MainWindow.h 文件
#ifndef WORKTHREAD_H
#define WORKTHREAD_H#include <QThread>class WorkThread : public QThread
{Q_OBJECT
public:explicit WorkThread(QObject *parent = nullptr);~WorkThread();public:void StartThread();void StopThread();void TerminateThread();protected:void run() override;private:void DealValue(int& nValue);signals:void SignalSendValue(QString, int);private:bool m_bRunFlag;};#endif // WORKTHREAD_H
  • MainWindow.cpp 文件
#include "WorkThread.h"
#include <QDebug>WorkThread::WorkThread(QObject *parent) : QThread(parent), m_bRunFlag(false)
{}WorkThread::~WorkThread()
{qDebug() << "Release WorkThread!";
}void WorkThread::StartThread()
{m_bRunFlag = true;start();
}void WorkThread::StopThread()
{m_bRunFlag = false;quit();wait();
}void WorkThread::TerminateThread()
{terminate();wait();
}void WorkThread::run()
{int nValue = 0;while (m_bRunFlag){DealValue(nValue);Qt::HANDLE hHandle = QThread::currentThreadId();emit SignalSendValue(QString::number(reinterpret_cast<quintptr>(hHandle), 16), nValue);QThread::msleep(100);}
}void WorkThread::DealValue(int &nValue)
{nValue++;if (nValue > 100)nValue = 1;
}

在这里插入图片描述

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

相关文章:

  • 微信网站用什么软件做宁波seo整体优化
  • wordpress当前文章标题批量优化网站软件
  • 定制化网站开发公司星乐seo网站关键词排名优化
  • 哪个网站可以做付费推广网页设计首页
  • 网站设置了权限中央电视台新闻联播广告价格
  • 网站邮件功能设计理论免费发布广告信息网
  • 做问卷调查赚钱网站网络营销网课
  • 重庆渝中区企业网站建设公司竞价托管公司排名
  • 网站h1网站制作教程视频
  • 支付集成文件放在网站哪里行业关键词一览表
  • phpmysql网站开发笔记微信指数怎么看
  • 武汉哪家网站公司好seo排名点击手机
  • 广州做网站lomuw怎么样在百度上免费推广
  • wordpress软件下载插件朝阳seo推广
  • 自己可以做网站么汽油价格最新调整最新消息
  • 设计单网站建设网站开发框架
  • 网站做淘宝客seo研究中心晴天
  • 河南网站建设哪里好发布外链
  • 济源网站建设足球世界排名国家
  • 公安 网站模板郑州seo优化
  • 广州正规网站建设企业怎么推广自己的产品
  • 企业网站设计注意事项关键词推广技巧
  • h5网页制作代码seo基础知识包括什么
  • 科技无国界郑州seo关键词排名优化
  • 什么网站是专门做批发商品站长之家网站模板
  • 凡科网 免费网站网页设计教程
  • 长治做网站哪里不错域名收录提交入口
  • 北京好的做网站的公司win11优化大师
  • 榆林高端网站建设如何设计郑州搜索引擎优化
  • 郑州网站优化怎样做杭州网站建设