qt调用linux系统的线程函数吗,Qt之主线程与子线程通讯(linux下)
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下)相关推荐
- android 线程传递数据,Android Handle主线程向子线程发送数据
一.前言: 今天,下载apk的时候,下载进度回调到主线程,主线程刷新通知栏,造成页面阻塞掉,不能点击页面(下载结束后,可以正常点击页面). 所以,要在进度回调发送消息到子线程,在子线程的Handler ...
- python主线程_Python主线程和子线程
Python主线程和子线程 一.setDaemon(False) 当一个进程启动之后,会默认产生一个主线程,因为线程是程序执行的最小单位,当设置多线程时,主线程会创建多个子线程,在Python中,默认 ...
- c++主线程等待子线程结束_简单明了的 Python 多线程来了 | 原力计划
作者 | 万里羊责编 | 王晓曼出品 | CSDN博客线程和进程计算机的核心是CPU,它承担了所有的计算任务,就像是一座工厂在时刻运行.如果工厂的资源有限,一次只能供一个车间来使用,也就是说当一个车间 ...
- pthread_detach():主线程与子线程分离,子线程结束后,资源自动回收
https://github.com/Rtoax/test/tree/master/c/glibc/pthread 目录 前言 pthread_join() pthread_detach() 前言 1 ...
- c语言主线程退出子线程,简单了解C语言中主线程退出对子线程的影响
这篇文章主要介绍了简单了解C语言中主线程退出对子线程的影响,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 对于程序来说,如果主进程在子进程还未结束时 ...
- c++主线程和子线程
c++主线程和子线程 最近在学习c++多线程,写一篇博客记录下自己的收获. 一.main()函数是主线程函数,在main()函数中创建的线程属于子线程,那主线程和子线程的优先级谁更高呢? 可以看下另外 ...
- Android的主线程与子线程
在上一篇文章Android的进程.线程与优先级中我们提到: 线程(thread):是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.一个进程至少对应一个线程. CP ...
- Handler详解系列(四)——利用Handler在主线程与子线程之间互发消息,handler详解...
MainActivity如下: package cc.c;import android.app.Activity; import android.os.Bundle; import android.o ...
- Android之HandlerThread源码分析和简单使用(主线程和子线程通信、子线程和子线程通信)
1.先熟悉handler方式实现主线程和子线程互相通信方式,子线程和子线程的通信方式 如果不熟悉或者忘记了,请参考我的这篇博客 Android之用Handler实现主线程和子线程互相通信以及子 ...
最新文章
- 基于C#的UDP协议的同步实现
- 【转】解密“设计模式”
- 2018年计划读书清单
- Android项目中出现的Plugin with id ‘kotlin-android‘ not found解决方法
- linux中shell条件判断if中的-a到-z的意思
- Java实训项目7:GUI学生信息管理系统 - 实现步骤 - 创建实体类
- 正在导出系统过程对象和操作 卡住_开会时CPU 飙升100%同事们都手忙脚乱记一次应急处理过程
- OmniPlan Pro 4 for Mac(项目流程管理)
- trycatch抛出异常_满屏的trycatch,这代码写得真丑!
- 科技行业组织称英国在脱欧后可能成为“数据避风港”
- IOS设备之armv6,armv7,armv7s,arm64
- Ubuntu下安装PyV8
- 手机端APP接口拦截(抓包)-Charles
- 又一琼,又一琼......
- ROS学习小笔记(Topic通信 ,service通信,参数服务器)
- qq空间显示手机型号android,qq发表说说怎么显示手机型号?手机QQ空间如何自定义手机型号?...
- 消防工程师 7.2 泡沫灭火系统-选型 8.1 防排烟系统-概述
- NVIDIA显卡硬件技术交流整理
- oracle 数据库 pga,Oracle程序大局区(PGA)
- xp系统设置ntp服务器,xp设置ntp服务器地址