QT小例子GUI(主)线程与子线程之间的通信
QT小例子GUI(主)线程与子线程之间的通信
在主线程上,可以控制子线程启动,停止,清零
如果子线程启动的话,每一秒钟会向主线程发送一个数字,让主线程更新界面上的数字。
- #ifndef TQT_H_
- #define TQT_H_
- #include <QtGui>
- #include <QtCore>
- class Thread : public QThread
- {
- Q_OBJECT
- private:
- int number;
- protected:
- void run();
- public:
- Thread(QObject *parent=0);
- ~Thread();
- signals:
- void UpdateSignal(int num);
- public slots:
- void ResetSlot();
- };
- class Widget : public QWidget
- {
- Q_OBJECT
- private:
- QLabel *label;
- QPushButton *startButton;
- QPushButton *stopButton;
- QPushButton *resetButton;
- Thread *myThread;
- int number;
- public:
- Widget(QWidget *parent = 0);
- ~Widget();
- signals:
- void ResetSignal();
- public slots:
- void ClearSlot();
- void StartSlot();
- void StopSlot();
- void UpdateSlot(int num);
- };
- #endif
- //tqt.cpp
- #include "tqt.h"
- #include <assert.h>
- #include <windows.h>
- Thread::Thread(QObject *parent)
- {
- number = 0;
- }
- Thread::~Thread()
- {
- }
- void Thread::run()
- {
- while(1)
- {
- emit UpdateSignal(number);
- number++;
- sleep(1);
- }
- }
- void Thread::ResetSlot()
- {
- number = 0;
- emit UpdateSignal(number);
- }
- Widget::Widget(QWidget *parent)
- {
- startButton = new QPushButton("start");
- stopButton = new QPushButton("stop");
- resetButton = new QPushButton("reset");
- label = new QLabel("empty");
- myThread = new Thread;
- QVBoxLayout *layout = new QVBoxLayout;
- layout->addWidget(label);
- layout->addWidget(startButton);
- layout->addWidget(stopButton);
- layout->addWidget(resetButton);
- setLayout(layout);
- connect(stopButton, SIGNAL(clicked()),
- this, SLOT(StopSlot()));
- connect(startButton, SIGNAL(clicked()),
- this, SLOT(StartSlot()));
- connect(resetButton, SIGNAL(clicked()),
- this, SLOT(ClearSlot()));
- connect(myThread, SIGNAL(UpdateSignal(int)),
- this, SLOT(UpdateSlot(int)));
- connect(this, SIGNAL(ResetSignal()),
- myThread, SLOT(ResetSlot()));
- setWindowTitle("Thread Test");
- resize(200, 200);
- myThread->start();
- }
- Widget::~Widget()
- {
- }
- void Widget::StartSlot()
- {
- myThread->start();
- }
- void Widget::StopSlot()
- {
- myThread->terminate();
- }
- void Widget::UpdateSlot(int num)
- {
- label->setText(QString::number(num));
- }
- void Widget::ClearSlot()
- {
- emit ResetSignal();
- }
- //main.cpp
- #include <QtGui>
- #include "tqt.h"
- int main(int argc,char **argv)
- {
- QApplication app(argc, argv);
- Widget *widget = new Widget;
- widget->show();
- return app.exec();
- }
QT小例子GUI(主)线程与子线程之间的通信相关推荐
- 关于主窗体与子窗体之间的通信以及面向对象思想的一些应用
该写几篇文章啦~ 最近在搞winForm,开始的时候遇到点问题.其实也不算什么大问题,归结起来还是主窗体与子窗体之间传值.通信的问题: 这个问题在网上的解决方案有很多,一搜一大堆,比如将主窗体自身作为 ...
- Qt对话框的事件循环分析(子线程中不能创建UI窗体分析)
重要: GUI线程和辅助线程 如前所述,每个程序在启动时都有一个线程.这个线程被称为"主线程"(在Qt应用程序中也称为"GUI线程").Qt GUI必须在这个线 ...
- Qt对话框的事件循环分析(子线程中不能创建UI窗体分析2)
Qt事件机制 QT-UI 后端 重要: GUI线程和辅助线程 如前所述,每个程序在启动时都有一个线程.这个线程被称为"主线程"(在Qt应用程序中也称为"GUI线程&quo ...
- PySide2多线程问题示例:创建新线程、子线程发射信号到主界面
PySide2多线程问题示例:创建新线程.子线程发射信号到主界面 本文是在pyside学习过程中的记录,从无子线程.子线程在主程序中直接操作Qt界面.子线程发射信号操作主界面三个步骤出发,记录对多线程 ...
- python主线程和子线程_python 在threading中如何处理主进程和子线程的关系
之前用python的多线程,总是处理不好进程和线程之间的关系.后来发现了join和setDaemon函数,才终于弄明白.下面总结一下. 1.使用join函数后,主进程会在调用join的地方等待子线程结 ...
- Qt中UI线程与子线程的交互
0.前言 GUI框架一般只允许UI线程操作界面组件,Qt也是如此.但我们的应用程序一般是多线程的,势必就涉及到UI线程与子线程的交互. 下面介绍常用的UI线程与子线程交互方式,并附上自己的Demo. ...
- Qt小例子学习52 - 卡片游戏
Qt小例子学习52 - 卡片游戏 Card.qml import QtQuick 2.0 import QtQuick.Layouts 1.3Item {id: cardLayout.fillWidt ...
- Qt 小例子学习33 - QTableWidget 显示点击的行列
Qt 小例子学习33 - QTableWidget 显示点击的行列 #include <QApplication> #include <QDebug> #include < ...
- Qt 小例子学习26 - 画网格
Qt 小例子学习26 - 画网格 GraphicsScene.h #ifndef GRAPHICSSCENE_H #define GRAPHICSSCENE_H#include <QGraphi ...
最新文章
- 用Python不回头也能看美女,这招你会了吗?
- 微软MCITP系列课程(二七)管理域和林信任
- .net简单算法实现无限级分类(一)
- 0401互联网新闻 | 企业微信新版发布;阿里巴巴发布“AI谣言粉碎机”
- nginx 高并发配置参数(转载)
- 探索cqrs和事件源_实践中的事件源和CQRS
- linux 双mipi摄像头,VS-RK3399 在linux系统下面调试Mipi camera接口介绍
- Solve one floodlight install problem
- [03] Android系统亮度调节
- Android SqlLite数据库的创建、增、删、改、查、使用事务
- python3 模块详细解释_详解Python3中的contextvars模块
- 在线打字练习网站介绍
- vue项目中引用阿里云图标库
- 2020年重磅喜讯!热烈祝贺王家林大咖大数据经典传奇著作《Spark大数据商业实战三部曲》 畅销书籍第二版 清华大学出版社发行上市! 前浪致 Spark + AI 后浪
- ArcGIS中地理配准与空间校正的不同
- hive为什么总是 执行Job running in-process (local Hadoop),总是本地执行。
- 山西省忻州市水泥厂能耗监测系统的设计与应用
- xp升级到win7傻瓜教程_重装系统软件哪些比较好_windows7教程
- matlab的空间坐标轴,空间三维坐标轴旋转
- 废旧android手机变短信服务器
热门文章
- php实现用户注册代码,php实现用户注册的代码示例
- 山西大学计算机科学与技术全国排名,山西这所大学曾是国内排名前五,如今排名下滑,有点走下坡路了...
- eclipse导入jar包_在命令行上操作JAR,WAR和EAR
- 继国美处罚“摸鱼”员工后,网易出品之摸鱼计算器...
- SpringBoot集成WebSocket,实现后台向前端推送信息
- 北京44岁程序员失业,感叹:编程估计没戏了,想去卖煎饼果子
- 每日一皮:测试都ok啊,咋一上线就乱了呢...
- 这个神器竟然能分分钟将多个 kubeconfig 合并成一个!
- 面试:说说Java中的 volatile 关键词?
- 99%的人都能看懂的分布式最佳「补偿」实践