本文主要是介绍【qt】多线程实现倒计时,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.界面设计
设置右边的intvalue从10开始倒计时
2.新建Thread类
新建Thread类,使其继承QThread类,多态重写run函数,相当于线程执行函数
3.重写run函数
重写run函数,让另一个进程每隔1s发出一个信号,主线程使用connect捕捉
4.创建一个线程
5.connect函数连接信号和处理函数
6.实现处理函数
7.源码
thread.h
#ifndef THREAD_H
#define THREAD_H#include <QObject>
#include<QThread>
class Thread : public QThread
{Q_OBJECT
public:Thread();virtual void run() override;
signals:void notify();
};#endif // THREAD_H
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include"thread.h"
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void deal();private:Ui::Widget *ui;Thread thread;
};
#endif // WIDGET_H
thread.cpp
#include "thread.h"Thread::Thread()
{}void Thread::run()
{for(int i=0;i<10;i++){sleep(1);emit notify();}}
widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);thread.start();connect(&thread,&Thread::notify,this,&Widget::deal);
}void Widget::deal(){int value=ui->lcdNumber->intValue();value--;ui->lcdNumber->display(value);}
Widget::~Widget()
{delete ui;
}
8.演示
多线程实现倒计时
这篇关于【qt】多线程实现倒计时的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!