moveToThread创建并开启多线程

#ifndef READFILE_H
#define READFILE_H

#include <QtGui/QMainWindow>
#include "ui_readfile.h"
#include "DataFile.h"
#include <QThread>

class ReadFile : public QMainWindow
{
	Q_OBJECT

public:
	ReadFile(QWidget *parent = 0, Qt::WFlags flags = 0);
	~ReadFile();

signals:
	void signalRead();

private:
	Ui::ReadFileClass ui;
	DataFile* m_dataFile;
	QThread* m_thread;
};

#endif // READFILE_H
#include "readfile.h"
#include <QDebug>

ReadFile::ReadFile(QWidget *parent, Qt::WFlags flags)
	: QMainWindow(parent, flags)
{
	ui.setupUi(this);
	qDebug()<<"main Process"<<QThread::currentThreadId();

	//1.按照顺序写2.信号槽(重点,这段代码非常重要,其余类的代码线程创建开启没有太大关系)

	m_thread=new QThread(this);

	m_dataFile=new DataFile(); 

	connect(this,SIGNAL(signalRead()),m_dataFile,SLOT(readFile()));

	m_dataFile->moveToThread(m_thread);

	m_thread->start();

	emit signalRead();
}

ReadFile::~ReadFile()
{

}
#ifndef DATAFILE_H
#define DATAFILE_H

#include <QObject>
#include <QThread>

class DataFile : public QObject
{
	Q_OBJECT

public:
	DataFile(QObject *parent=NULL);
	~DataFile();

public slots:
	void readFile();

private:
	
};

#endif // DATAFILE_H
#include "DataFile.h"
#include <QTextStream>
#include <QFile>
#include <QIODevice>
#include <QThread>
#include <QDebug>

DataFile::DataFile(QObject *parent)
	: QObject(parent)
{

	qDebug()<<"main process"<<QThread::currentThreadId();
}

DataFile::~DataFile()
{
	
}

void DataFile::readFile(){
	qDebug()<<"Process 2"<<QThread::currentThreadId();
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值