《QT6/C++开发指南》多线程/案例14_1

效果图

在这里插入图片描述

多线程理论

启动线程表示另开一个子线程来掷骰子,如果在主窗口线程内掷骰子,鼠标移动会卡顿,因为主窗口主线程忙着对鼠标作出反应去了。在这里插入图片描述

代码项目框架

框里为子线程
在这里插入图片描述

tdicethread.h

重写 run()

在这里插入图片描述

在这里插入图片描述

#include "tdicethread.h"
#include    <QRandomGenerator>

TDiceThread::TDiceThread(QObject *parent)
    : QThread{
   
   parent}
{
   
   

}

void TDiceThread::diceBegin()
{
   
    //开始掷骰子
    m_paused=false; // 不是暂停状态
}

void TDiceThread::dicePause()
{
   
   //暂停掷骰子
    m_paused=true; // 暂停位:真(是暂停状态)
}

void TDiceThread::stopThread()
{
   
   //停止线程
    m_stop=true; // 停止位:真
}

void TDiceThread::run()
{
   
   //线程的事件循环
    m_stop=false;       //启动线程时令m_stop=false
    m_paused=true;      //启动运行后暂时不掷骰子
    m_seq=0;            //掷骰子次数
    while(!m_stop)      //循环主体
    {
   
   
        if (!m_paused)
        {
   
   
            m_diceValue= QRandomGenerator::global()->bounded(1,7);  //产生随机数[1,6]
            m_seq++;
            emit newValue(m_seq, m_diceValue);  //发射信号
        }
        msleep(500);    //线程休眠500ms
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值