【Qt学习】 QThread线程类

发布于:2022-11-05 ⋅ 阅读:(321) ⋅ 点赞:(0)

目录

一:为什么需要线程

二:如何使用线程


一:为什么需要线程

生活实际场景中,如果能够使得多条生产线同时运作,效率是大有提高,本次线程的学习,就是发挥这样的一个作用

在项目中,如制作视频播放器,如果先解码后,再将解码获取的数据流信息,传输到窗口界面上显示,这样的效率是十分低下的,因此,本次引入线程的学习

即 为实现 视频文件解码 与 视频窗口界面播放 同步[多个过程的同时进行]

通过测试案例,了解什么是线程

如下新建一个类testthread 信号槽QObject机制 同时继承QThread线程类

testthread.h .cpp  [线程测试案例 仅供学习使用]

#ifndef TESTTHREAD_H
#define TESTTHREAD_H

#include <QObject>
#include<QThread>

class testthread : public QThread
{
    Q_OBJECT
public:
    testthread();
    void run();
    virtual ~testthread();
    //定义停止的标志位
    bool m_stop;
};

#endif // TESTTHREAD_H
#include "testthread.h"
#include<QDebug>


testthread::testthread()
{
    //初始线程未启动
    this->m_stop = false;
}

void testthread::run()
{
    qDebug() << "线程开始";
    //线程运行中
    while(!m_stop)
    {
        //线程处理函数
        for(int i = 0; i < 1000; i++)
        {
            qDebug() << i ;
        }
        sleep(1000);
    }
    qDebug() << "线程结束";
}

testthread::~testthread()
{

}

线程处理函数,遍历打印0至1000的数 ,用于如下线程的测试,深入了解什么是线程

二:如何使用线程

使用线程 能够实现多条生产线 同步操作 多件事情在同一时间内解决

如,开机动画 与 线程处理函数[线程]  同步进行

如,登录窗口界面显示 与 线程处理函数[线程] 同步进行

如,点击(某个)按钮 与 线程处理函数[线程] 同步进行

对于视频播放器,应该点击视频列表中某个项,对视频的播放暂停进行控制[对线程需要设置启动线程和停止线程]

    void videoWidgetShowSlot(QListWidgetItem*item);
    connect(videowinlist,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(videoWidgetShowSlot(QListWidgetItem*)));
void IndexWin::videoWidgetShowSlot(QListWidgetItem *item)
{
    qDebug()<<item->text()<<"界面创建";
    //线程的创建
    testthread *t = new testthread;
    //线程的启动
    t->start();
}
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到