Qt线程简单使用二:QObject~创建任务类
// MyThread.h #pragma once #include <QObject>
#include <QThread> class MyWork : public QObject
{
Q_OBJECT public:
MyWork(QObject *parent=nullptr);
~MyWork(); void work(); signals:
void sendNum(int num);
};
// MyThread.cpp #include "MyThread.h" MyWork::MyWork(QObject *parent)
: QObject(parent)
{} MyWork::~MyWork()
{} void MyWork::work()
{
int num = 0;
while (num < 1000)
{
emit sendNum(num);
num++;
QThread::msleep(5);
}
}
// QtWidgetsApplication1.cpp #include "MyThread.h" MyWidget::MyWidget(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this); // 1.创建子线程对象
QThread* t = new QThread; // 2.创建任务类对象
MyWork* work = new MyWork; // 3.将任务类对象移动到子线程对象中
work->moveToThread(t); // 开始工作
connect(this, &MyWidget::startWork, work, &MyWork::work);
connect(work, &MyWork::sendNum, this, [=](int num) {ui.label->setText(QString::number(num)); });
connect(ui.pushButton, &QPushButton::clicked, this, [=]()
{
emit startWork();
t->start();
}); // 释放
// 第一种:创建的时候,添加this参数,这样会自动析构,例:QThread* t = new QThread(this);
// 第二种,手动释放
connect(this, &MyWidget::destroy, [=]() {
t->quit();
t->wait();
delete t; delete work;
}); }
Qt线程简单使用二:QObject~创建任务类的更多相关文章
- Qt DLL总结【二】-创建及调用QT的 DLL(三篇)good
目录 Qt DLL总结[一]-链接库预备知识 Qt DLL总结[二]-创建及调用QT的 DLL Qt DLL总结[三]-VS2008+Qt 使用QPluginLoader访问DLL 开发环境:VS20 ...
- Qt Dll总结(二)——创建及使用Qt的Dll(转载)
先讲一下对QT动态链接库的调用方法,主要包括: 1.显式链接DLL,调用DLL的全局函数,采用Qt的QLibrary方法 2.显示链接DLL,调用DLL中类对象.成员函数.(通过对象即可实现类成员函数 ...
- Qt DLL总结【二】-创建及调用QT的 DLL
开发环境:VS2008+Qt4.7.4 最近看了不少Qt的DLL例子,总结一下如何创建和调用QT 动态链接库. 先讲一下对QT动态链接库的调用方法,主要包括: 1.显式链接DLL,调用DLL的全局函数 ...
- qt 线程简单学习
QThread线程,只需继承QThread类,并重载run方法,之后就可以使用了. #ifndef THREAD_H #define THREAD_H #include <QThread> ...
- python 3+djanjo 2.0.7简单学习(二)--创建数据库和模型
我们紧接上次,这里将建立数据库,创建第一个模型提示:这里我们不需要去一直启动,django会在我们ctrl+s的时候自动刷新并启动服务,很方便吧 1.数据库配置 现在,打开 vote_mysite/ ...
- Qt经典—线程、事件与Qobject(耳目一新)
介绍 You’re doing it wrong. — Bradley T. Hughes 线程是qt channel里最流行的讨论话题之一.许多人加入了讨论并询问如何解决他们在运行跨线程编程时所遇到 ...
- Qt经典—线程、事件与Qobject
介绍 You’re doing it wrong. — Bradley T. Hughes 线程是qt channel里最流行的讨论话题之一.许多人加入了讨论并询问如何解决他们在运行跨线程编程时所遇到 ...
- QT 线程池 + TCP 小试(一)线程池的简单实现
*免分资源链接点击打开链接http://download.csdn.net/detail/goldenhawking/4492378 很久以前做过ACE + MFC/QT 的中轻量级线程池应用,大概就 ...
- BitAdminCore框架应用篇:(二)创建一个简单的增删改查模块
NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/cookie ...
- Java并发编程(二)-- 创建、运行线程
Java线程 Java线程类也是一个object类,它的实例都继承自java.lang.Thread或其子类. Java可以用如下方式创建一个线程: Tread thread = new Thread ...
随机推荐
- SpringBoot Starter大全
spring Boot应用启动器基本的一共有44种,具体如下 1)spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置.日志和YAML. 2)spring-b ...
- You can't specify target table for update in FROM clause
mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表( ...
- C#多线程(9):多阶段并行线程
目录 前言 Barrier 类 属性和方法 示例 新的示例 说明 前言 这一篇,我们将学习用于实现并行任务.使得多个线程有序同步完成多个阶段的任务. 应用场景主要是控制 N 个线程(可随时增加或减少执 ...
- K6 在 Nebula Graph 上的压测实践
背景 对于数据库来说,性能测试是一个非常频繁的事情.优化查询引擎的规则,调整存储引擎的参数等,都需要通过性能测试,查看系统在不同场景下的影响. 即便是同样的代码,同样的参数配置,在不同的机器资源配置, ...
- DataX 离线跨网场景的实施配置
配置仅限于跨不同网情况,网络互通情况方案和配置会更简单一点 内网A:MySql数据转换成Csv { "job": { "setting": { "sp ...
- Java 理解“万事万物皆对象”+ 匿名对象的使用
1 /** 2 * 3 * @Description 4 * @author Bytezero·zhenglei! Email:420498246@qq.com 5 * @version 6 * @d ...
- Java 数组嵌套
1 public static void main(String[] args) 2 { 3 int[] arr = new int[] {8,6,3,1,9,5,4,7}; 4 int[] inde ...
- jquery判断滚动条是否到达顶部或者底部
<script> $(function(){ $(window).scroll(function(){ //离顶部的距离=0 //方法一:var isTop=$(this).scrollT ...
- TLS原理与实践(二)
主页 个人微信公众号:密码应用技术实战 个人博客园首页:https://www.cnblogs.com/informatics/ 引言 在上一篇博客中,我们通过<一文读懂TLS1.2协议](ht ...
- vscode 快速重新启动 reload Window
vscode 快速重新启动 reload Window ctrl + shift + P 输入 reload