qt 线程状态机实现并发自动任务

这篇具有很好参考价值的文章主要介绍了qt 线程状态机实现并发自动任务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、状态机类文章来源地址https://www.toymoban.com/news/detail-536189.html

  1. 头文件 MyStateMachine.h
#ifndef MYSTATEMACHINE_H
#define MYSTATEMACHINE_H

#include <QStateMachine>
#include "ActionTask.h"
#include <QObject>
#include <QFinalState>

class MyStateMachine:public QObject
{
   
    Q_OBJECT
public:
    explicit MyStateMachine(QObject *parent = nullptr);
    ~MyStateMachine();
signals:
    void sigToWorkState();

    void sigToIdleState();


public slots:
    void onStart();
     void onStop();

    void onTask();

    void onToIdleState();


private:
    void initSlot();

private:
    QThread* m_thread;
    ActionTask* m_worker;
    QState* workState;
    QState* idleState;
    QFinalState *finalState;
    QStateMachine  *m_achine;
};

#endif // MYSTATEMACHINE_H

  1. 状态机 cpp
#include "MyStateMachine.h"
#include "qdebug.h"
#include "qeventloop.h"
#include <QEvent>
#include "global.h"

MyStateMachine::MyStateMachine(QObject *parent)
    : QObject{
   parent}
{
   
    // 创建一个子线程 for state1
    m_thread = new QThread();
    m_worker = new ActionTask();
    m_worker->moveToThread(m_thread);

    // 创建状态机
    m_achine = new QStateMachine();
    workState = new QState();
    idleState = new QState();
    finalState = new QFinalState();

    // 将任务完成状态添加到工作状态中
    idleState->addTransition(this, &MyStateMachine::sigToWorkState, workState);
    workState->addTransition(this, &MyStateMachine::sigToIdleState, idleState);

    workState->addTransition(m_worker, &ActionTask::sigFinished, idleState);

    connect(finalState, &QState::exited, this, [this](){
   
        emit gSignal.sigLog

到了这里,关于qt 线程状态机实现并发自动任务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://blog.csdn.net/weixin_44075027/article/details/131590501

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包