QT C++实现多线程通信--示例代码
来源:互联网 发布:linux which命令 编辑:程序博客网 时间:2024/06/11 21:57
</pre><p></p><pre name="code" class="cpp">先看测试代码:
main.cpp
#include "mainwindow.h"#include <QApplication>//#include<mythreaad.h>int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); // mythreaad my; // my.start(); // QObject::connect(&my,SIGNAL(MySignal(QString)),&w,SLOT(myreceiveslots(QString))); // QObject::connect(&w,SIGNAL(mainSignal(int)),&my,SLOT(mythreadrec(int))); return a.exec();}
mainWindow.h
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include<qthread.h>#include<mythreaad.h>//#include<data.h>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); void generateData();signals: void mainSignal(mydataTrans);private: mythreaad *tre; Ui::MainWindow *ui;mydataTrans *mydata;};#endif // MAINWINDOW_H
#include "mainwindow.h"#include "ui_mainwindow.h"#include<qmessagebox.h>#include<qdebug.h>#include<string>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); tre=new mythreaad(); tre->start();QObject::connect(this, SIGNAL(mainSignal(mydataTrans)), tre, SLOT(mythreadrec(mydataTrans)));// QObject::connect(tre,SIGNAL(MySignal(int )),this,SLOT(MainRecei(int)));this->generateData(); // this->moveToThread(tre);}MainWindow::~MainWindow(){ delete ui;}void MainWindow::generateData(){mydata = new mydataTrans();mydata->id = 9; mydata->name = "chenshuyi ";//mydata->age = 26;emit(mainSignal(*mydata)); }
#ifndef MYTHREAAD_H#define MYTHREAAD_H#include<qthread.h>#include<qstring.h>#include"mydataTrans.h"class mythreaad:public QThread{ Q_OBJECTpublic: mythreaad(); void run(); int handleInt(int);signals: void MySignal(int );public slots: void mythreadrec(mydataTrans);public:mydataTrans mydata2;};#endif // MYTHREAAD_H
#include "mythreaad.h"#include"qstring.h"#include<qdebug.h>mythreaad::mythreaad(){}void mythreaad::run(){// qDebug()<<"thread running";// exec();}void mythreaad::mythreadrec(mydataTrans mydata1){ qDebug()<<"hello wolrd\n"; qDebug() << QString::number(mydata1.id); qDebug() << QString::fromStdString(mydata1.name);// qDebug() << QString::number(mydata1.age); system("pause");// num=handleInt(num);// emit(MySignal(num));}int mythreaad::handleInt(int num){ return num*2;}
#pragma once#include<string>using namespace std;class mydataTrans{public:mydataTrans();~mydataTrans();int id;string name;};
#include "mydataTrans.h"mydataTrans::mydataTrans(){}mydataTrans::~mydataTrans(){}
分别是主线程类,子线程类,要求处理的数据类型类,主线程传出数据类型类给子线程进行相应处理,相同的办法,子线程也可以把传出结果传给主线程显示(这部分代码不给出)。
0 0
- QT C++实现多线程通信--示例代码
- qt多线程间通信
- QT多线程通信EMIT
- QT信号槽实现多线程通信(一)
- QT示例代码【积累】
- QT QStringListModel 示例代码
- Qt Events 示例代码
- Linux C代码实现读取配置文件示例
- ubuntu12.04 + Qt + glut + C 环境搭建和示例代码
- 多线程示例代码
- 多线程示例代码
- Windows多线程示例代码
- 多线程下载示例代码
- 使用Qt示例代码实现的视频播放。VS项目
- Qt TCP通信,多线程服务器端
- “多线程”简介及其C代码实现框架
- java多线程-线程间通信-示例代码-解决安全问题-等待唤醒机制wait()notify()notifyAll()
- 毕向东讲解(摘)—11.多线程线程间通信(示例代码)
- Gcc编译选项分析
- Acitivity加载模式说起
- mac无法安装wxPython
- 记录一个:Create, Update, Delete and Copy Item Activity in SharePoint 2010 Workflow
- 0707排序算法
- QT C++实现多线程通信--示例代码
- 开源解析器--ANTLR
- Js运动动画系列8--链式动画
- java线程,线程1循环10次,线程2循环10次,再到线程1 循环10次,再到线程2循环10次,如此反复,循环10次
- RTMP直播应用与延时分析
- C++异常处理
- 为什么要有指针
- 数据压缩
- 构建Linux根文件系统