Qt多线程基础---创建方式1

多线程优点:有时程序运行,界面卡顿,操作数据流大,执行任务多等等问题均可采用多线程,

                       把主线程一些任务分流给子线程,能明显减轻主线程压力,提稿程序运行速度。

线程创建一般有两种方式,其中最简单的一种是创建一个继承QObject类的文件,更改其继承对象为QThread,重写protected::void run()方法,在主界面调用start()函数便可开始线程运行。

如下是案例代码展示:

案例:在labal控件上显示一个数字,数字从0数到10000截止,在设置一个按钮,点击按钮,开始显示数字。

myThread.cpp(主窗口)

#include "myThread.h"
#include "qthread1.h"
#include <QDebug>
#include <QFont>
myThread::myThread(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);

	ui.label->setAlignment(Qt::AlignCenter);//设置文本显示居中
	QFont font;
	font.setPixelSize(200);//设置文本显示字体大小
	ui.label->setFont(font);

	qDebug() << "主线程对象地址:" << QThread::currentThread();
	//创建子线程
	qthread1 *son = new qthread1;
	
	connect(son, &qthread1::setNum, this, [=](int num) {
		ui.label->setNum(num);
	});
	connect(ui.startBtn, &QPushButton::clicked, this, [=]() {
		//启动子线程
		son->start();
	});



}

myThread::~myThread()
{}

myThread.h(此文件无改动)

​
#include <QtWidgets/QMainWindow>
#include "ui_myThread.h"

class myThread : public QMainWindow
{
    Q_OBJECT

public:
    myThread(QWidget *parent = nullptr);
    ~myThread();

private:
    Ui::myThreadClass ui;
};

​

qthread1.cpp(子线程对象文件)

#include "qthread1.h"
#include <QDebug>
void qthread1::run()
{
	qDebug() << "先前线程对象的地址:" << QThread::currentThread();
	int num = 0;
	while (true)
	{
		emit setNum(num++);
		if (num == 10000)
		{
			break;
		}
		QThread::usleep(1);
	}
	qDebug()<<"run()线程执行完毕,子线程退出";
}

qthread1.h

#pragma once
#include <QThread>
class qthread1  : public QThread
{
	Q_OBJECT

public:
	qthread1();
	~qthread1();
protected:
	void run();
signals:
	void setNum(int num);//发送

};

效果展示

 ​​​

本项目案例转载与互联网

爱编程的大丙

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值