【QT学习之路】QThread的简单使用
QThread的使用说明:QThread线程类是QT已经封装好的, 如果要使用线程, 就派生出子类并且实现线程接口函数run(run就是线程任务函数)
下面就用QThread实现当前系统时间的获取并且在主界面(UI线程)上显示,实现方法:在子线程中采集系统时间,通过信号发送给UI线程, 在ui线程上显示。
一、在QT工程中,新建一个类,并继承QThread
二、子线程类实现采集系统时间
头文件(timethread.h)代码
1、为了让我们的子类与QT已有的QThread类很相似,我们派生类的构造函数改成与父类的构造函数一样
2、发送时间是通过信号发送给UI线程,需要加Q_OBJECT,这样才能使用信号与槽函数
具体代码
#ifndef TIMETHREAD_H
#define TIMETHREAD_H#include <QObject>
#include <QThread>class TimeThread : public QThread
{Q_OBJECT //使用信号与槽函数
public:explicit TimeThread(QObject *parent = nullptr);//实现run接口void run();
//声明信号
signals:void sendTime(QString );
};#endif // TIMETHREAD_H
cpp文件(timethread.cpp)代码
通过接口函数run,实现每隔1秒获取当前系统时间,并用emit将信号发送出去
#include "timethread.h"
#include <QTime>
#include <QDebug>
TimeThread::TimeThread(QObject *parent):QThread(parent)
{}
void TimeThread::run()
{//线程任务while(1){qDebug()<<currentThreadId();QString t = QTime::currentTime().toString("hh:mm:ss");//延时sleep(1);//通过信号把时间发送出去emit sendTime(t);}
}
三、UI界面设计
四、UI线程的具体实现
1、关联字线程发送的信号(sendTime)
2、通过两个按钮实现启动和停止线程
3、将接收到的时间显示在液晶显示屏上
具体代码
#include "threadshowtime.h"
#include "ui_threadshowtime.h"ThreadShowTime::ThreadShowTime(QWidget *parent) :QMainWindow(parent),ui(new Ui::ThreadShowTime)
{ui->setupUi(this);//关联线程的sendTime信号connect(&th, &TimeThread::sendTime, this, &ThreadShowTime::show_time);
}ThreadShowTime::~ThreadShowTime()
{delete ui;
}void ThreadShowTime::on_startBt_clicked()
{//启动线程th.start();
}void ThreadShowTime::on_stopBt_clicked()
{//线程停止th.terminate();
}void ThreadShowTime::show_time(QString t)
{ui->lcdNumber->display(t);
}
五、效果展示
问题咨询及项目源码请加群:
QQ群
名称:IT项目交流群
群号:245022761
【QT学习之路】QThread的简单使用相关推荐
- QT学习之路2 学习笔记
QT学习之路2 学习笔记 1.Qt 是一个著名的 C++ 应用程序框架.你并不能说它只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI 组件.使用 Qt,在一定程度上你获得的是一个&quo ...
- [记录]学习QT学习之路2第四天
今天学习内容对应<<QT学习之路2>>第18到23部分,主要是有关于QT事件这一部分的内容(=_=真是看到我快吐了,感觉这本书不适合我这种初学者). 先放出思维导图 难点总结 ...
- 转载: Qt 学习之路 2归档
Qt 学习之路 2归档 http://www.devbean.net/2012/08/qt-study-road-2-catelog/
- 对QT学习之路12-14的源代码补充与修正
QT学习之路12-14的源代码有些不完整,为了更好的让大家学习,本人做了一点修正与补充,谢谢.源代码如下: 头文件: #ifndef MAINWINDOW_H #define MAINWINDOW_H ...
- java qt gui_工控编程,Qt 学习之路
原标题:工控编程,Qt 学习之路 Qt 是一个著名的 C++ 库--或许并不能说这只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI.使用 Qt,在一定程序上你获得的是一个"一站 ...
- Qt学习之路_12(简易数据管理系统)
原文地址为: Qt学习之路_12(简易数据管理系统) 前言 最近从大陆来到台湾,之间杂事很多,挤不出时间来更新博客- 这次主要是通过做一个简易的数据库管理系统,来学习在Qt中对数据库,xml,界面的各 ...
- 《Qt 学习之路 2》
Home / Qt 学习之路 2 / <Qt 学习之路 2>目录 <Qt 学习之路 2>目录 序 Qt 前言 Hello, world! 信号槽 自定义信号槽 Qt 模块简介 ...
- QT学习之路(一)ubuntu 18.04的Qt Creator在线安装
文章目录 前言 一.准备工作 二.安装步骤 参考链接 前言 Qt是嵌入式开发的必备工具之一,在Linux下安装尤其重要. Qt是C++的一个库,或者说是开发框架,里面集成了一些库函数,提高开发效率. ...
- Qt学习之路(24): QPainter(改写paintEvent)
Qt学习之路(24): QPainter(改写paintEvent) 多些大家对我的支持啊!有朋友也提出,前面的几节有关event的教程缺少例子.因为event比较难做例子,也就没有去写,只是把大概写 ...
- [记录]QT学习之路2学习第三天
今天的内容对应的是<<QT学习之路2>>第13到17部分. 主要内容由思维导图总结 一,什么是QT对话框 二,什么是QT标准对话框 三,怎么样实现QT对话框数据传递 四,深入了 ...
最新文章
- php中怎么连接数据库中的表,php 连接 excel表格数据库数据-php中如何将execl的数据导入到数据库中...
- 河北省单招计算机类考试考英语吗,2019年河北省高职单招考试十类 和对口电子电工类、计算机类联考 专业基础考试(英语)考试大纲.doc...
- 目标检测近5年发展历程概述(转)
- 【安利UI设计师】电商购物移动应用程序界面设计UI套件包,轻松完成项目需求。
- 目标检测——NMS算法的学习笔记~
- 【C++入门】C++ STL概述
- tp框架 中的时间 查询范围
- Atitit webshell选型 1. PHP Shell 2.4	1 1.1. 设置密码	4 2. 测试切换目录	4 2.1. 自己实现	5 1.PHP Shell 2.4 Please co
- 展讯模块读写IMEI
- 10分钟教你用scratch做一款小游戏,玩游戏不如自己做游戏
- Pygame推箱子2021:经典版推箱子小游戏,一起回味童年经典掌机游戏~
- [分享]一次中移物联网校园招聘javaweb的笔试题
- 2022计算机系统大作业——程序人生-Hello’s P2P
- Java操作Excel - Easy Excel
- Java 扫描识别条形码图片
- Arduino驱动LED128X64 - U8g2 自定义中文字库
- 欧莱雅的矿物质粉今天去买回来了
- 服装检索相关论文阅读
- 160个CrackMe-第四个“ajj与黑头兄!”
- 咫尺天涯 三世桃花
热门文章
- 高清版计算机组成原理(第2版)-唐朔飞
- 给出汉字‘你’、‘我’、‘他’在Unicode表中的位置
- 人工智能和计算机程序有什么区别,AI与计算机程序的区别?
- 48.网络安全渗透测试—[穷举篇11]—[webshell密码破解(asp/aspx/php)]
- Python 简单函数入门之“计算器“
- 【MOOC-生物信息学-蛋白质结构预测与分析】(占坑)
- 【Unity3D插件】Highlighting System插件分享《物体高亮插件》
- C语言贪吃蛇 新手入门(超详细)
- 不要再学 JSP 了,学 SpringBoot + Thymeleaf + Vue吧
- vss2005 Internet配置