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

互联网网站名字正规网站制作公司哪里有

互联网网站名字,正规网站制作公司哪里有,qq推广软件,中文wordpress 主题文章目录 简介信号槽信号与槽的连接 特点观察者模式定义观察者模式结构图 实现简单的信号和槽 简介 信号槽机制与Windows下消息机制类似#xff0c;消息机制是基于回调函数#xff0c;Qt中用信号与槽来代替函数指针#xff0c;使程序更安全简洁。  信号和槽机制是 Qt 的核心… 文章目录 简介信号槽信号与槽的连接 特点观察者模式定义观察者模式结构图 实现简单的信号和槽 简介 信号槽机制与Windows下消息机制类似消息机制是基于回调函数Qt中用信号与槽来代替函数指针使程序更安全简洁。  信号和槽机制是 Qt 的核心机制可以让编程人员将互不相关的对象绑定在一起实现对象之间的通信。 信号 当对象改变其状态时信号就由该对象发射 (emit) 出去而且对象只负责发送信号它不知道另一端是谁在接收这个信号。这样就做到了真正的信息封装能确保对象被当作一个真正的软件组件来使用。 槽 用于接收信号而且槽只是普通的对象成员函数。一个槽并不知道是否有任何信号与自己相连接。而且对象并不了解具体的通信机制。 信号与槽的连接 所有从 QObject 或其子类 ( 例如 Qwidget ) 派生的类都能够包含信号和槽。因为信号与槽的连接是通过 QObject 的 connect() 成员函数来实现的。 connect(sender, SIGNAL(signal), receiver, SLOT(slot));其中 sender 与 receiver 是指向对象的指针SIGNAL() 与 SLOT() 是转换信号与槽的宏。 特点 1、一个信号可以连接多个槽 当信号发射时会以不确定的顺序一个接一个的调用各个槽。 2、多个信号可以连接同一个槽 即无论是哪一个信号被发射都会调用这个槽。 3、信号直接可以相互连接 发射第一个信号时也会发射第二个信号。 4、连接可以被移除 这种情况用得比较少因为在对象被删除时Qt会自动移除与这个对象相关的所有连接。语法如下 disconnect(sender, SIGNAL(signal), receiver, SLOT(slot));观察者模式 定义 观察者模式又被称为发布-订阅Publish/Subscribe模式属于行为型模式的一种它定义了一种一对多的依赖关系让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时会通知所有的观察者对象使他们能够自动更新自己。 观察者模式结构图 在观察者模式中有如下角色 1、Subject抽象主题抽象被观察者抽象主题角色把所有观察者对象保存在一个集合里每个主题都可以有任意数量的观察者抽象主题提供一个接口可以增加和删除观察者对象。 2、ConcreteSubject具体主题具体被观察者该角色将有关状态存入具体观察者对象在具体主题的内部状态发生改变时给所有注册过的观察者发送通知。 3、Observer抽象观察者是观察者者的抽象类它定义了一个更新接口使得在得到主题更改通知时更新自己。 4、ConcrereObserver具体观察者实现抽象观察者定义的更新接口以便在得到主题更改通知时更新自身的状态。 实现简单的信号和槽 为什么要说观察者模式呢因为Qt的信号和槽就是基于这种设计模式来进行设计的。通过信号和槽将对发送者信号感兴趣的对象连接起来当发送者的信号发送的时候就会对这个列表进行遍历这种方式类似于广播不关心用户是否收到只是进行发送而已。下面是实现方式。 #include iostream #include vector using namespace std;//槽函数类 template class TParam class SlotBase { public:virtual void slotFuntion(TParam) 0;virtual ~SlotBase() default; };template class TReceiver,class TParam class Slot:public SlotBaseTParam { private:TReceiver *m_preveiver;void (TReceiver::*m_func)(TParam); public:Slot(TReceiver * reveiver,void(TReceiver::*func)(TParam)){m_preveiver reveiver;m_func func;}void slotFuntion(TParam param) override{(m_preveiver-*m_func)(param);} };//信号类 template class TParam class Signal { private:std::vectorSlotBaseTParam * signal_vector; public:template class TReceivervoid addSlot(TReceiver *reveiver,void(TReceiver::*func)(TParam)){signal_vector.push_back(new Slot(reveiver,func));}void operator()(TParam param){for(SlotBaseTParam *p:signal_vector){p-slotFuntion(param);}} };//两个测试的接受信号类 class Receiver1 { public:void func1(int param){std::cout这是Receiver1类中方法,参数为paramendl;} };class Receiver2 { public:void func2(int param){std::cout这是Receiver2类中方法,参数为paramendl;} };class SendObj { public:Signalint valueChanged; public:void testSend(int value){valueChanged(value);} };#define connect(send,signal,reveiver,slot) send-signal.addSlot(reveiver,slot)int main() {SendObj *sendnew SendObj;Receiver1 *r1 new Receiver1;Receiver2 *r2 new Receiver2;connect(send,valueChanged,r1,Receiver1::func1);connect(send,valueChanged,r2,Receiver2::func2);send-testSend(100);return 0; }
http://www.w-s-a.com/news/748598/

相关文章:

  • 企业网站规划书vue适合什么样的网站开发
  • 个人网站备案名字网站设计的提案
  • 网站自己做还是找人做常州钟楼区邹区建设局网站
  • 网站文件上传wordpress修改asp做微网站
  • 妇女之家网站建设方案英语不行如何编程做网站
  • 深圳企业网站建设推广服务网站托管一年多少钱
  • wordpress 百度地图api网络seo天津
  • 网站营销咨询顾问餐饮加盟网站建设方案
  • 网站后台管理系统的重要技术指标wordpress下单邮件通知的实现
  • 通化县住房和城乡建设局网站定制网站收费
  • 湖北做网站教程哪家好成都网站建设询q479185700上快
  • 网站的seo方案鹰潭做网站的公司
  • 高级室内设计网站太原网站设计费用
  • 智信建设职业培训学校网站深圳做网站建设开发
  • 宣城市住房和城乡建设局网站网站界面设计专利
  • 免费个人网站建站申请如何做内网网站
  • 福州专业网站建设怎么做黄骅港怎么读
  • 望京 网站建设深圳发型网站建设
  • 电商网站的相同点医疗网站建设代理商
  • 网址导航网站有哪些易营宝智能建站
  • 私人定制哪个网站做的比较好免费网站使用
  • 嘉兴网站建设系统免费的seo优化
  • 购书网站开发的意义网站建设接单渠道
  • 网站站内搜索怎么做wordpress默认主题修改
  • 网站推广的表现方式交网站建设 域名计入什么科目
  • 龙岗南联网站建设公司江门市
  • 网站运行方案设计平台模式
  • 网站加入wordpress邳州城乡建设局网站
  • 两个网站如何使用一个虚拟主机东莞市网站seo内容优化
  • 湖南网站建设公司排名傲派电子商务网站建设总结