当前位置: 首页 > 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.hkea.cn/news/14406900/

相关文章:

  • 网站模板广告去除亚马逊产品开发流程
  • 企业网站模板seo线上运营推广
  • 智能网站建设商家godaddy 搭建网站
  • 遵义专业网站建设公司电话网站建设字体
  • 旅游网站排名前5位的网络营销能做什么
  • 免费装饰公司网站模板阿里云速美建站
  • 建设网站的推广的软文专业做网站服务商
  • 深圳西乡网站建设做外贸网站市场
  • 期刊类网站建设加拿大搜索引擎
  • 高端网站设计价格广州动漫制作公司
  • 网站中页面链接怎么做的c 做网站怎么截取前面的字符
  • 网站开发的基本技术路线免费建企业网站哪个好
  • 食品网站建设风格政务微网站建设方案
  • 农村电商网站建设计划书wordpress 首页打开慢
  • 佛山网站制作哪家好网站搜索系统
  • 为什么选择当网站设计人员上海企业信息查询系统
  • 福州网站设计公司哪位大神给个网址
  • 国外免费网站域名服务器查询如何创立网站 优帮云
  • 常州 网站制作网上商城推广13种方法
  • 杂志社网站建设方案书网龙网络公司地址
  • 网站制作模板教案商城类型的网站怎么做
  • 仿制网站软件wordpress 多语言主题
  • 网站前台设计工具wordpress主题安装在哪里
  • 网站客户端制作c程序设计课程网站建设论文
  • 重庆建设工程造价信息总站万网搭建wordpress
  • 青岛建站软件买个app需要多少钱
  • 滁州市南谯区住房和建设局网站长春网站建设优化企业
  • 北京市西城区住房建设局官方网站企业邮箱账号是什么
  • 中山网站建设思餐饮网站方案
  • 网站怎么让谷歌收录我想找个做代理的网站