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

教育培训学校网站建设方案php手机网站如何制作

教育培训学校网站建设方案,php手机网站如何制作,如何备份wordpress主题,wordpress 小说站需求#xff1a; 不同线程#xff0c;或者同一线程的不同类之间通信#xff0c;按照Qt的机制#xff0c;定义一个信号#xff0c;一个槽#xff0c;然后绑定。以两个类A,B为例#xff0c;A触发一个信号#xff0c;B执行一个槽#xff0c;在定义好信号和槽之后#x…需求 不同线程或者同一线程的不同类之间通信按照Qt的机制定义一个信号一个槽然后绑定。以两个类A,B为例A触发一个信号B执行一个槽在定义好信号和槽之后需要在另一处将两个类的信号和槽进行绑定。如果模块特别多绑了绑去 略显麻烦耦合性太高。 此处分享一个类别人写的忘记了在哪看到的。可以将上述问题解决降低耦合性。 使用 1A B两个类都需要包含头文件。#include PSEventController.h 2, A类中触发的地方调用publish函数。 //比如按下按钮 需提供一个唯一的标识字符串可自定义参数 PSEventController::publish(actionName.toLatin1(),Q_ARG(bool,isChecked)); 3B类中 定义 on_psEvent_xxx 函数并实现。 //此处的addLine 即为上述pulish 函数中的第一个参数isChecked 为publis中的第二个参数 void on_psEvent_addLine(bool isChecked); 4B类中初始化的时候 执行 subscribe 函数。 PSEventController::subscribe(this,addLine); 这样A 和B 两个类 发布和订阅的唯一字符串标识符只要一致A 在pubsh 的时候 B 就可以subscribe到并且A 和B 完全耦合相互不可见。 具体代码 //PSEventController.h #ifndef PSEVENTCONTROLLER_H #define PSEVENTCONTROLLER_H#include QObject #include QReadWriteLock #include QMap #include QList#define METHOD_PREFIX on_psEvent_class PSEventController : public QObject {Q_OBJECT public:static void unSubscribe(QObject* listener, const QByteArray eventName);static bool subscribe(QObject* listener, const QByteArray eventName);static bool publish(const QByteArray eventName, Qt::ConnectionType connectionType,QGenericArgument val0 QGenericArgument(), QGenericArgument val1 QGenericArgument(),QGenericArgument val2 QGenericArgument(), QGenericArgument val3 QGenericArgument(),QGenericArgument val4 QGenericArgument(), QGenericArgument val5 QGenericArgument(),QGenericArgument val6 QGenericArgument(), QGenericArgument val7 QGenericArgument(),QGenericArgument val8 QGenericArgument(), QGenericArgument val9 QGenericArgument());static inline bool publish(const QByteArray eventName,QGenericArgument val0 QGenericArgument(), QGenericArgument val1 QGenericArgument(),QGenericArgument val2 QGenericArgument(), QGenericArgument val3 QGenericArgument(),QGenericArgument val4 QGenericArgument(), QGenericArgument val5 QGenericArgument(),QGenericArgument val6 QGenericArgument(), QGenericArgument val7 QGenericArgument(),QGenericArgument val8 QGenericArgument(), QGenericArgument val9 QGenericArgument()){return publish(eventName, Qt::AutoConnection, val0, val1, val2, val3, val4, val5, val6, val7, val8, val9);}static inline QString get_Errors(){return ps_LastError_;}static inline void clearEvents(){QWriteLocker locker(ps_Lock_);psEvents_pool_.clear();}static inline QByteArray methodFormatting(const QByteArray eventName) {return METHOD_PREFIX eventName;} private:static QMapQByteArray, QListQObject* psEvents_pool_;static QReadWriteLock ps_Lock_;static QString ps_LastError_; };#endif // PSEVENTCONTROLLER_H//PSEventController.cpp #include PSEventController.h #include QWriteLockerQMapQByteArray, QListQObject* PSEventController::psEvents_pool_; QReadWriteLock PSEventController::ps_Lock_; QString PSEventController::ps_LastError_;void PSEventController::unSubscribe(QObject* listener, const QByteArray eventName) {QWriteLocker locker(ps_Lock_);int index -1;if (psEvents_pool_.contains(eventName) (index psEvents_pool_[eventName].indexOf(listener)) 0 index psEvents_pool_[eventName].count())psEvents_pool_[eventName].takeAt(index); }bool PSEventController::subscribe(QObject* listener, const QByteArray eventName) {QWriteLocker locker(ps_Lock_);if (psEvents_pool_.contains(eventName)) {if (-1 ! psEvents_pool_[eventName].indexOf(listener)) {ps_LastError_ QString(This object is subscribed to this eventName);return false;}psEvents_pool_[eventName].push_back(listener);return true;} else {psEvents_pool_.insert(eventName, { listener });return true;} }bool PSEventController::publish(const QByteArray eventName, Qt::ConnectionType connectionType,QGenericArgument val0, QGenericArgument val1, QGenericArgument val2, QGenericArgument val3,QGenericArgument val4, QGenericArgument val5, QGenericArgument val6, QGenericArgument val7,QGenericArgument val8, QGenericArgument val9) {QReadLocker locker(ps_Lock_);if (!psEvents_pool_.contains(eventName)) {ps_LastError_ QString(No objects subscribe to this eventName);return false;}auto methodName methodFormatting(eventName);QStringList errors;for (auto listener : psEvents_pool_[eventName]) {if (!listener)continue;auto ret QMetaObject::invokeMethod(listener, methodName, connectionType,val0, val1, val2, val3, val4, val5, val6, val7, val8, val9);if (!ret)errors.append(QString(%1:%2).arg(listener-metaObject()-className()).arg(listener-objectName()));}if (errors.isEmpty())return true;ps_LastError_ QString(%1 execution failed:[\n).arg(QString(eventName));for (auto err : errors)ps_LastError_ QString(%1;\n).arg(err);ps_LastError_ ]\n;return false; }
http://www.hkea.cn/news/14324347/

相关文章:

  • 茂名网站建设哪家好上海app开发推荐中伟科
  • 正规网站建设方案详细品牌高端网站
  • 网站做新闻外链有作用吗然后做网站
  • flash网站as网站面包屑导航怎么做的
  • 北京网站建设是什么微信小程序发布流程
  • 深圳专业网站优化公司报价个人网站设计报告书
  • 订餐网站模板下载太仓市住房和城乡建设局规网站
  • app网站模板广州网站建设星珀
  • php可以做网站wordpress打开高级设置
  • 潍坊网站制作价格平面设计能做什么工作
  • 影视网站怎么做内链优化大师怎么提交作业
  • 长春火车站建在哪里网站被网站建设的人控制了
  • 建设网站对于客户自己搭建个人网站
  • 广州哪家公司做网站wordpress点击外链
  • 设计企业网站步骤深圳建设交易主页
  • 图书电子商务网站建设wordpress底部友情链接
  • 深圳做网站好的公司wordpress地区分站
  • 成都青羊网站建设潍坊品牌设计公司
  • 网站没有权重wordpress 改 分隔
  • 建设学院实验网站的作用设计本官方网站电脑版
  • 免费个人网站建设大全外贸做中英文网站
  • 设计电子商务网站主页网站开发报价评估
  • 做网站需要学php哪些技术短视频营销推广公司
  • 上海知名的网站建设公司武功县住房和城乡建设局网站
  • 做宠物的网站大庆网站建设大庆
  • 网站建设 企业观点建设招标网 官方网站
  • 做网站安卓客户端西宁建设网站
  • 俄语 网站wordpress主题讲解
  • 西安模板网站服务商企业申请域名
  • 网站建设唯美谷网站那个网站可以做雪花特效