Qt的事件-槽与C#的事件委托有点类似吧

JHJJHJ4A554E 2010-06-17 03:57:37
rt,前些天看了看c#,感觉两者好像有点类似?

兄弟们讨论讨论。
...全文
760 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
longl215 2010-08-17
  • 打赏
  • 举报
回复
路过学习!
chenyz_cn 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tingsking18 的回复:]

大致看了一下委托的实现:
Qt中定义了Q_OBJECT后,会为每个这样的类生成一个moc信息,有一个编号,和这个编号对应的signal或者slot的名称。connect的时候就把调用哪个slot的编号确定下来,同时检查slot的函数签名是否一致,从来实现所谓的“类型安全”,然后在触发slot的时候,会根据这个编号,来调用相应的方法。
委托,就是包装的函数指针,在创建委托的时候,会把函数名称和……
[/Quote]

分析得有道理
中才德创 2010-07-10
  • 打赏
  • 举报
回复
在想用的时候,连连通通就可。真是方便实用。
乐儿爷 2010-07-03
  • 打赏
  • 举报
回复
qt的信号槽其实是moc提前编译了一下。
让我们使用起来看起来跟c#的委托差不多的一个意思。
主要的目的就是松耦合的在任意的地方可以connect disconnect
其实都是observer模式啦。
qt的signal slots很方便。
JHJJHJ4A554E 2010-07-03
  • 打赏
  • 举报
回复
用起来确实很方便,也很灵活
中才德创 2010-06-30
  • 打赏
  • 举报
回复
还是delphi做得方便些。
JHJJHJ4A554E 2010-06-21
  • 打赏
  • 举报
回复
原来看.net的时候,事件委托有些看不明白,学了qt发现事件委托能看明白些了,呵呵
JHJJHJ4A554E 2010-06-18
  • 打赏
  • 举报
回复
信号与槽好像不仅仅是ls说的那么简单吧
devbean 2010-06-18
  • 打赏
  • 举报
回复
信号槽貌似只是用宏做的一个连接,看看源代码发现,那两个宏相当于建了一个 map,把信号和槽连接起来,所谓的 emit 信号,其实就是去查找 map 找到对应的 slot 函数并且调用。
tingsking18 2010-06-18
  • 打赏
  • 举报
回复
大致看了一下委托的实现:
Qt中定义了Q_OBJECT后,会为每个这样的类生成一个moc信息,有一个编号,和这个编号对应的signal或者slot的名称。connect的时候就把调用哪个slot的编号确定下来,同时检查slot的函数签名是否一致,从来实现所谓的“类型安全”,然后在触发slot的时候,会根据这个编号,来调用相应的方法。
委托,就是包装的函数指针,在创建委托的时候,会把函数名称和函数指针在内部对应起来,clr根据函数名称来确定传入委托的函数指针是否是类型安全的。然后根据函数指针来调用函数。然后MS有扩展了编译器,搞出了2.0中的扩展方法,3.5里面的lambda expression这些花里胡哨的东西,其实实质都是一样的,实例化一个委托。
tingsking18 2010-06-18
  • 打赏
  • 举报
回复
类似,实现机制也差不多。
等我有时间读读sscli,看看委托底层是这么实现的。
allyez 2010-06-17
  • 打赏
  • 举报
回复
qt的信号槽机制,其实就是“delphi双击控件,然后写过程、函数”这个操作,只不过delphi用简单的双击代替,而qt要手写代码来连接~
goodluckyxl 2010-06-17
  • 打赏
  • 举报
回复
就是GLIB 中signalconnect一套吧
具体我也说不清楚 真好也是正在看源码
看看signal怎么实现的
回头具体弄清楚了 切磋切磋
不过这个设计方法非常好
可以绕开很多不必要的层次
lxkjlzz 2010-06-17
  • 打赏
  • 举报
回复
MFC的消息机制

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧