Qt之主线程与子线程通信(linux下)

转载请注明出处:http://blog.csdn.net/feng1790291543

主线程与子线程通信主要是通过Qt上的Gui按钮,触发使得主线程上的信息发送到子线程中,并且时刻监测线程的运行情况

主线程,头文件:

#ifndef MANAGEWIDGET_H

#define MANAGEWIDGET_H

#include

#include

//#include "childwidget.h"

//#include "simplethread.h"

//class ChildWidget;

class SimpleThread;

namespace Ui

{

class ManageWidget;

}

class ManageWidget : public QWidget

{

Q_OBJECT

public:

ManageWidget(QWidget *parent = 0);

~ManageWidget();

private:

Ui::ManageWidget *ui;

//ChildWidget *child;

QThread *child;

SimpleThread *simple;

private slots:

void on_pushButton_clicked();

void on_pushButtonRunChild_clicked();

void on_pushButtonSend_clicked();

void StartReceive();

void FinishReceive();

signals:

void SignalChild(QString str);

};

#endif // MANAGEWIDGET_H

源文件:

#include "managewidget.h"

#include "ui_managewidget.h"

#include "childwidget.h"

#include "simplethread.h"

ManageWidget::ManageWidget(QWidget *parent)

: QWidget(parent), ui(new Ui::ManageWidget)

{

ui->setupUi(this);

simple=new SimpleThread;

//child=new ChildWidget;

child=new QThread;

connect(this,SIGNAL(SignalChild(QString)),simple,SLOT(print_str(QString)));

connect(child,SIGNAL(started()),this,SLOT(StartReceive()));

//connect(child,SIGNAL(finished()),this,SLOT(FinishReceive()));

}

ManageWidget::~ManageWidget()

{

delete ui;

}

void ManageWidget::StartReceive()

{

qDebug()<

}

void ManageWidget::FinishReceive()

{

qDebug()<

}

void ManageWidget::on_pushButtonSend_clicked()

{

QString str=ui->lineEditContent->text();

emit SignalChild(str);

return ;

}

void ManageWidget::on_pushButtonRunChild_clicked()

{

qDebug()<

simple->moveToThread(child);

child->start();

return ;

}

void ManageWidget::on_pushButton_clicked()

{

qDebug()<"<isRunning();

qDebug()<"<isFinished();

child->quit();

child->wait();

qDebug()<"<isRunning();

qDebug()<"<isFinished();

child->deleteLater();

delete child;

}

子线程头文件:

#ifndef CHILDWIDGET_H

#define CHILDWIDGET_H

#include

#include

class ChildWidget : public QThread

{

Q_OBJECT

public:

ChildWidget();

void run();

};

#endif // CHILDWIDGET_H

子线程源代码:

#include "childwidget.h"

ChildWidget::ChildWidget()

{

}

void ChildWidget::run()

{

QString str="hello zhangsan";

qDebug()<

exec();

return ;

}

中间独立线程:

#ifndef SIMPLETHREAD_H

#define SIMPLETHREAD_H

#include

#include

class SimpleThread : public QObject

{

Q_OBJECT

public:

SimpleThread();

private slots:

void print_str(QString str);

};

#endif // SIMPLETHREAD_H

源代码:

#include "simplethread.h"

SimpleThread::SimpleThread()

{

}

void SimpleThread::print_str(QString str)

{

qDebug()<

return ;

}

运行效果:

qt调用linux系统的线程函数吗,Qt之主线程与子线程通讯(linux下)相关推荐

  1. android 线程传递数据,Android Handle主线程向子线程发送数据

    一.前言: 今天,下载apk的时候,下载进度回调到主线程,主线程刷新通知栏,造成页面阻塞掉,不能点击页面(下载结束后,可以正常点击页面). 所以,要在进度回调发送消息到子线程,在子线程的Handler ...

  2. python主线程_Python主线程和子线程

    Python主线程和子线程 一.setDaemon(False) 当一个进程启动之后,会默认产生一个主线程,因为线程是程序执行的最小单位,当设置多线程时,主线程会创建多个子线程,在Python中,默认 ...

  3. c++主线程等待子线程结束_简单明了的 Python 多线程来了 | 原力计划

    作者 | 万里羊责编 | 王晓曼出品 | CSDN博客线程和进程计算机的核心是CPU,它承担了所有的计算任务,就像是一座工厂在时刻运行.如果工厂的资源有限,一次只能供一个车间来使用,也就是说当一个车间 ...

  4. pthread_detach():主线程与子线程分离,子线程结束后,资源自动回收

    https://github.com/Rtoax/test/tree/master/c/glibc/pthread 目录 前言 pthread_join() pthread_detach() 前言 1 ...

  5. c语言主线程退出子线程,简单了解C语言中主线程退出对子线程的影响

    这篇文章主要介绍了简单了解C语言中主线程退出对子线程的影响,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 对于程序来说,如果主进程在子进程还未结束时 ...

  6. c++主线程和子线程

    c++主线程和子线程 最近在学习c++多线程,写一篇博客记录下自己的收获. 一.main()函数是主线程函数,在main()函数中创建的线程属于子线程,那主线程和子线程的优先级谁更高呢? 可以看下另外 ...

  7. Android的主线程与子线程

    在上一篇文章Android的进程.线程与优先级中我们提到: 线程(thread):是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.一个进程至少对应一个线程. CP ...

  8. Handler详解系列(四)——利用Handler在主线程与子线程之间互发消息,handler详解...

    MainActivity如下: package cc.c;import android.app.Activity; import android.os.Bundle; import android.o ...

  9. Android之HandlerThread源码分析和简单使用(主线程和子线程通信、子线程和子线程通信)

    1.先熟悉handler方式实现主线程和子线程互相通信方式,子线程和子线程的通信方式 如果不熟悉或者忘记了,请参考我的这篇博客     Android之用Handler实现主线程和子线程互相通信以及子 ...

最新文章

  1. 基于C#的UDP协议的同步实现
  2. 【转】解密“设计模式”
  3. 2018年计划读书清单
  4. Android项目中出现的Plugin with id ‘kotlin-android‘ not found解决方法
  5. linux中shell条件判断if中的-a到-z的意思
  6. Java实训项目7:GUI学生信息管理系统 - 实现步骤 - 创建实体类
  7. 正在导出系统过程对象和操作 卡住_开会时CPU 飙升100%同事们都手忙脚乱记一次应急处理过程
  8. OmniPlan Pro 4 for Mac(项目流程管理)
  9. trycatch抛出异常_满屏的trycatch,这代码写得真丑!
  10. 科技行业组织称英国在脱欧后可能成为“数据避风港”
  11. IOS设备之armv6,armv7,armv7s,arm64
  12. Ubuntu下安装PyV8
  13. 手机端APP接口拦截(抓包)-Charles
  14. 又一琼,又一琼......
  15. ROS学习小笔记(Topic通信 ,service通信,参数服务器)
  16. qq空间显示手机型号android,qq发表说说怎么显示手机型号?手机QQ空间如何自定义手机型号?...
  17. 消防工程师 7.2 泡沫灭火系统-选型 8.1 防排烟系统-概述
  18. NVIDIA显卡硬件技术交流整理
  19. oracle 数据库 pga,Oracle程序大局区(PGA)
  20. xp系统设置ntp服务器,xp设置ntp服务器地址

热门文章

  1. WindowsPhone基础琐碎总结-----数据绑定(一)
  2. 公司的电脑为什么卡——因为缺少工程师文化!
  3. 6000字详解数据仓库建设
  4. 全局负载均衡与CDN内容分发
  5. 字节终面:CPU 是如何读写内存的?
  6. 同时拿到BATJMD的Offer是怎样的一种体验?
  7. 4.5万字手把手教你实现MySQL TB级数据存储!!
  8. 作为程序员的你第一套房子是多少岁?多少万?
  9. 看源码,我为什么推荐IDEA?
  10. 廖雪峰为你无门槛讲述高并发那些事