当前位置: 首页 > news >正文

提供营销单页网站在技校计算机网站建设

提供营销单页网站,在技校计算机网站建设,为什么有的网页打不开怎么解决,搜索引擎推广是什么意思在项目中经常需要等待#xff0c;我们模拟0-30的数#xff0c;假如我们其中5#xff0c; 25的数需要进行等待#xff0c;等待用户处理完自己事情后#xff0c;按下按钮继续#xff0c;找Qt的项目中有一个 QStateMachineqstatemmachine类提供了一个分层有限状态机。 QSta…在项目中经常需要等待我们模拟0-30的数假如我们其中5 25的数需要进行等待等待用户处理完自己事情后按下按钮继续找Qt的项目中有一个 QStateMachineqstatemmachine类提供了一个分层有限状态机。 QStateMachine基于Statecharts的概念和符号。qstatemmachine是状态机框架的一部分。 状态机管理一组状态从QAbstractState继承的类和这些状态之间的转换QAbstractTransition的后代这些状态和转换定义了一个状态图。一旦构建了状态图状态机就可以执行它。qstatemmachine的执行算法基于状态图XML SCXML算法。该框架的概述给出了几个状态图和构建它们的代码。 使用addState函数向状态机添加顶级状态。使用removeState函数删除状态。不鼓励在机器运行时删除状态。 在机器启动之前必须设置初始状态。初始状态是机器启动时进入的状态。然后可以启动状态机。当进入初始状态时就会发出started信号。 机器是事件驱动的并保持自己的事件循环。事件通过postEvent发送到机器。请注意这意味着它是异步执行的并且如果没有正在运行的事件循环它将无法进行。你通常不需要将事件直接发布到机器上因为Qt的转换例如QEventTransition和它的子类会处理这个。但是对于由事件触发的自定义转换postEvent很有用。 状态机处理事件并进行转换直到进入顶级最终状态然后状态机发出finished信号。您还可以显式地stop状态机。在这种情况下会发出stopped信号。 下面的代码片段显示了一个状态机当按钮被点击时状态机将完成 QPushButton button;QStateMachine machine;QState *s1 new QState();s1-assignProperty(button, text, Click me);QFinalState *s2 new QFinalState();s1-addTransition(button, SIGNAL(clicked()), s2);machine.addState(s1);machine.addState(s2);machine.setInitialState(s1);machine.start(); 那么我们实现自己 Processor类 #ifndef PROCESSOR_H #define PROCESSOR_H#include QObject #include QStateMachine #include QState #include QFinalStateclass Processor : public QObject {Q_OBJECT public:explicit Processor(QObject *parent nullptr);void startProcessing();void resumeProcessing();signals:void progressUpdated(int value);void runSig();void paused();void finished();private:void processNextItem();bool isRunning() const;private:QStateMachine *m_machine;QState *m_runningState;QState *m_pausedState;QFinalState *m_finishedState;int m_currentIndex; };#endif // PROCESSOR_H#include processor.h #include QDebug #include QTimer #include QThreadProcessor::Processor(QObject *parent): QObject(parent),m_machine(new QStateMachine(this)),m_runningState(new QState(m_machine)),m_pausedState(new QState(m_machine)),m_finishedState(new QFinalState(m_machine)),m_currentIndex(0) {// 配置运行状态connect(m_runningState, QState::entered, [this]() {qDebug() Entered running state;processNextItem();});// 配置暂停状态connect(m_pausedState, QState::entered, [this]() {qDebug() Entered paused state;});// 配置暂停状态 // connect(m_finishedState, QState::entered, [this]() { // qDebug() Entered finished state; // });// 配置状态转换m_runningState-addTransition(this, Processor::paused, m_pausedState);m_pausedState-addTransition(this, Processor::runSig, m_runningState);m_runningState-addTransition(this, Processor::finished, m_finishedState);// 配置状态机m_machine-setInitialState(m_runningState);}bool Processor::isRunning() const {return m_machine-isRunning(); }void Processor::startProcessing() {if (!m_machine-isRunning()) {qDebug() Starting processing...;m_machine-start();} }void Processor::resumeProcessing() {m_currentIndex;emit runSig();}void Processor::processNextItem() {if (m_currentIndex 30) {emit finished();return;}emit progressUpdated(m_currentIndex);if (m_currentIndex 5 || m_currentIndex 25) {qDebug() --- Reached pause point ---;emit paused();}else { // 只有非暂停点时继续自动处理m_currentIndex;QThread::msleep(200); //模拟耗时操作processNextItem();} }单例模式 #ifndef TASKPROCESSOR_H #define TASKPROCESSOR_H#include QObject #include QStateMachine #include QState #include QFinalState #include QQueue #include QMutex #include functionalclass TaskProcessor : public QObject {Q_OBJECT public:// 单例接口保证全局唯一static TaskProcessor getInstance() {static TaskProcessor processor;return processor;}// 添加任务到队列void addTask(const std::functionvoid() task);// 开始处理任务队列void startProcessing();// 暂停任务处理例如等待外部事件void pauseProcessing();// 恢复任务处理void resumeProcessing();signals:// 任务状态信号可根据需求扩展void pausedSig();void resumeSig();void taskStarted();void taskFinished();void allTasksFinished();private:// 构造函数私有确保单例explicit TaskProcessor(QObject *parent nullptr);Q_DISABLE_COPY(TaskProcessor)// 内部处理任务队列的方法void processNextTask();// 任务队列及同步保护QQueuestd::functionvoid() m_taskQueue;QMutex m_mutex;// 状态机及状态QStateMachine *m_machine;QState *m_runningState;QState *m_pausedState;QFinalState *m_finishedState; };#endif // TASKPROCESSOR_H#include processor.h #include QDebug #include QThreadTaskProcessor::TaskProcessor(QObject *parent): QObject(parent),m_machine(new QStateMachine(this)),m_runningState(new QState(m_machine)),m_pausedState(new QState(m_machine)),m_finishedState(new QFinalState(m_machine)) {// 配置运行状态进入运行状态时尝试处理下一个任务connect(m_runningState, QState::entered, this, [this]() {qDebug() Entered running state;processNextTask();});// 配置暂停状态仅做记录具体暂停逻辑可通过状态机外部控制connect(m_pausedState, QState::entered, this, [this]() {qDebug() Entered paused state;});// 状态切换配置暂停和恢复m_runningState-addTransition(this, SIGNAL(pausedSig()), m_pausedState);m_pausedState-addTransition(this, SIGNAL(resumeSig()), m_runningState);// 当任务全部处理完毕时切换到结束状态m_runningState-addTransition(this, SIGNAL(allTasksFinished()), m_finishedState);// 状态机初始状态设为运行状态m_machine-setInitialState(m_runningState); }void TaskProcessor::addTask(const std::functionvoid() task) {QMutexLocker locker(m_mutex);m_taskQueue.enqueue(task); }void TaskProcessor::startProcessing() {if (!m_machine-isRunning()) {qDebug() Starting Task Processing...;m_machine-start();} }void TaskProcessor::pauseProcessing() {// 可以发出信号通知状态机进入暂停状态qDebug() Requesting pause...;emit pausedSig(); // 此处 SIGNAL 与状态机转换绑定 }void TaskProcessor::resumeProcessing() {// 发出信号恢复处理qDebug() Requesting resume...;emit resumeSig();processNextTask(); }void TaskProcessor::processNextTask() {QMutexLocker locker(m_mutex);if (m_taskQueue.isEmpty()) {qDebug() All tasks finished.;emit allTasksFinished();return;}// 取出队列中的下一个任务std::functionvoid() task m_taskQueue.dequeue();// 在运行状态下开始任务发出任务开始信号emit taskStarted();qDebug() Processing a task...;// 这里可以在一个独立线程中运行任务避免阻塞状态机// 例如QThread::sleep() 或者使用 QtConcurrenttask();// 任务执行完成发出任务结束信号emit taskFinished();}
http://www.dnsts.com.cn/news/107128.html

相关文章:

  • 用vs2010做网站做暧暧小视频有声音的网站
  • 建设银行辽宁分行报名网站重庆档案馆建设网站
  • 手机在线做ppt模板下载网站有哪些装修网站合作平台有哪些
  • 深圳网站建设专业乐云seo网络维护工作内容及心得体会
  • 杭州网站制作多少钱网站设计方案谁写
  • 吉林大学建设工程学院 旧网站自己做的视频网站上传电影
  • 专注网站搭建的公司搭建网站做财务系统
  • 深圳建网建网站福州网站建设方案咨询
  • 团队建设游戏网站dell网站设计特色
  • 深圳网站域名注册安卓游戏开发软件
  • 建立个人网站流程智林东莞网站建设公司
  • 网站推广关键词工具网站建设的知识产权归属
  • 建筑工程招标网站深圳市公司网站建设价格
  • 江苏怎么做网站排名优化如何使用开源程序做网站
  • 在线生成手机网站水墨背景风格企业网站模板
  • vs2015 建设微网站wordpress超级编辑器
  • 重庆免费做网站社交平台网站建设预算
  • 游戏平台网站建设青岛网站空间
  • 中山企业网站优化弄一个电影网站怎么做
  • wordpress授权登录seo网站优化做什么
  • 如何建设网站接收数据珠宝网站模版
  • 新手做网站最简单流程wordpress怎装模板
  • 新光途网站建设哪些经营范围可以开网站建设费用
  • 更改网站模板冒用公司名做网站
  • 北京推广网站网站制作ppt
  • 建设一个下载网站dede的网站地图
  • php 开源 建站樱花动漫imomoe官网入口
  • 网站底部悬浮导航社交app开发
  • html格式网站网站开店前的四项基本建设
  • 做家务的男人网站wordpress开发手册下载