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

泉州做网站哪家好山东学生做自我评价的网站

泉州做网站哪家好,山东学生做自我评价的网站,亚马逊插件WordPress,asp网站 证书上文列举了qt中线程的几种方法,其中2种方法最为常见。 这两种方法都少不了QThread类,前者继承于QThread类,后者复合QThread类。 本文以实例的方式描述了movetothread()这种线程的方法,将QObject的子类移动…

上文列举了qt中线程的几种方法,其中2种方法最为常见。

这两种方法都少不了QThread类,前者继承于QThread类,后者复合QThread类。

本文以实例的方式描述了movetothread()这种线程的方法,将QObject的子类移动到指定的线程。

一、例子

1. Worker类

1.1Worker类头文件

#ifndef WORKER_H
#define WORKER_H
#include <QObject>
#include<QDebug>
#include <QThread>
class Worker : public QObject  
{
    Q_OBJECT
public:
    explicit Worker(QObject *parent = nullptr);
public slots:

    void doWork(const QString &parameter);
signals:
    void resultReady(const QString &result);
};
#endif // WORKER_H
1.2 Worker类cpp文件

#include "worker.h"
Worker::Worker(QObject *parent)
    : QObject{parent}
{}
void Worker::doWork(const QString &parameter)
{
    // 在这里写入你的线程代码
    qDebug() << "Thread2 is running";
    qDebug() << parameter;//收到的参数
    //一个简单的循环
    for (int i = 0; i < 5; i++)
    {
        QThread::msleep(500); ; // 休眠1秒
        qDebug() << "!!!";
    }
    qDebug() << "end2";
    emit resultReady("======");//发结果
}

2.Controller类

2.1Controller类头文件

#ifndef CONTROLLER_H
#define CONTROLLER_H
#include <QObject>
#include "worker.h"
#include <QThread>
class Controller : public QObject
{
    Q_OBJECT
public:
    explicit Controller(QObject *parent = nullptr);
    QThread workerThread;//复合了QThread类
signals:
    void operate(const QString &parameter);
public slots:
    void handleResult(const QString & str);
};

#endif // CONTROLLER_H

2.2Controller类cpp文件

#include "controller.h"
Controller::Controller(QObject *parent)
    : QObject{parent}
{
    Worker *worker = new Worker;
    worker->moveToThread(&workerThread);
    connect(this, &Controller::operate, worker, &Worker::doWork);
    connect(worker, &Worker::resultReady, this,&Controller::handleResult);
    connect(&workerThread, &QThread::finished, worker, &QObject::deleteLater);
    workerThread.start();

}
void Controller::handleResult(const QString & str)
{
    qDebug()<<str;//取结果
}
 

3.在窗口类的按钮函数里放入

void MainWindow::on_pushButton_xxx_clicked()//你自己的按钮函数
{
    Controller *controller = new Controller();
    controller->operate("parameter");
}

二、优缺点

优点:克服了重写run的缺点,比较灵活简洁,

缺点:但是不能在线程里面实现常驻任务(死循环的任务)。

轻量级的函数可以用movethread,无需创建独立线程类,例如你有多个小函数要在线程内做, 全部扔给一个QThread。还有一开始没使用线程,但是后边发觉这些代码还是放线程比较好,如果用子类化QThread的方法重新设计代码,将会有可能让你把这一段推到重来,这个时候,moveThread的好处就来了,你可以把这段代码的从属着movetothread,把代码移到槽函数,用信号触发它就行了。

http://www.yayakq.cn/news/141403/

相关文章:

  • 中山做网站比较好陕西网站建设推广公司
  • 机关门花网站建设asp网站开发源码
  • 网站建设毕业设计评价wordpress默认导航栏
  • 建站之星怎么收费台州市建设项目规划网站
  • 如何介绍网站模板wordpress js load
  • 福建省建设厅网站余安溪学校网站建设
  • 如何用iis做网站wordpress卡片圆角
  • 阿里云部署一个自己做的网站吗国家知识产权专利网官网
  • 一个网站空间可以做多少个网站建设青岛公司网站
  • 苏州网站建设都找全网天下wordpress表单反馈
  • 宝安附近做网站公司怎样联系网站管理员
  • 手机网站如何更改网站基础建设和维护
  • 宜宾网站建设略奥网络福州市鼓楼区建设局网站
  • 上海知名网站推广游戏秒玩网站
  • 西安网站建设qq群号网页浏览器缩略词
  • 张雪峰谈网络工程专业衡水网站优化推广
  • 英雄联盟网站模版dw不会写代码能建立网站吗
  • wordpress瀑布流电子商务seo实训总结
  • 银川建设局网站企业网站建设课程体会
  • 常州网站建设维护定制衣服的app
  • 时光轴网站中国500强公司有哪些
  • 自我做t恤的网站如何自己开发手机app
  • 企业网站方案国际货代做网站
  • wordpress 图片 自动重命名深圳seo优化电话
  • 怎样维护网站的安全和备份有找猎聘网站做简历优化的
  • linux 网站搬家wordpress medium主题
  • 手机网站开发 pdf修改wordpress编辑器
  • 免费行情软件app网站大全下载有图片永久域名注册
  • 通化好的网站建设的公司wordpress上传与安装
  • 如何进入公司网站后台建设部网站王尚春