目录
一:为什么需要线程
生活实际场景中,如果能够使得多条生产线同时运作,效率是大有提高,本次线程的学习,就是发挥这样的一个作用
在项目中,如制作视频播放器,如果先解码后,再将解码获取的数据流信息,传输到窗口界面上显示,这样的效率是十分低下的,因此,本次引入线程的学习
即 为实现 视频文件解码 与 视频窗口界面播放 同步[多个过程的同时进行]
通过测试案例,了解什么是线程
如下新建一个类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 后查看