社区
Qt
帖子详情
Qt的事件-槽与C#的事件委托有点类似吧
JHJJHJ4A554E
2010-06-17 03:57:37
rt,前些天看了看c#,感觉两者好像有点类似?
兄弟们讨论讨论。
...全文
760
14
打赏
收藏
Qt的事件-槽与C#的事件委托有点类似吧
rt,前些天看了看c#,感觉两者好像有点类似? 兄弟们讨论讨论。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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的消息机制
浅析
C#
委托(Delegate)
C#
中的委托(Delegate)
类似
于 C 或 C++ 中函数的指针。委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。 委托(Delegate)特别用于实现
事件
和回调方法。所有的委托(Delegate)都派生自 System.Delegate 类。 声明委托(Delegate) 委托声明决定了可由该委托引用的方法。委托可指向一个与其具有相同标签的方法。 例如,假设有一个委托: public delegate int MyDelegate (string s); 上面的委托可被用于引用任何一个带有一个单一的 string 参数的方法,并返回一个 in
Qt
的
事件
-
槽
与
C#
的
事件
委托
类似
Qt
中定义了Q_OBJECT后,会为每个这样的类生成一个moc信息,有一个编号,和这个编号对应的signal或者slot的名称。connect的时候就把调用哪个slot的编号确定下来,同时检查slot的函数签名是否一致,从来实现所谓的“类型安全”,然后在触发slot的时候,会根据这个编号,来调用相应的方法。 委托,就是包装的函数指针,在创建委托的时候,会把函数名称和函数指针在内部对应起来,clr根据函数名称来确定传入委托的函数指针是否是类型安全的。然后根据函数指针来调用函数。然后MS有扩展了编译器,搞出了2
C#
委托类比
QT
信号
槽
,在非UI线程中更新UI
Invoke()的作用是:在应用程序的主线程上执行指定的委托。一般应用:在辅助线程中修改UI线程( 主线程 )中对象的属性时,调用this.Invoke(); 在多线程编程中,我们经常要在工作线程中去更新界面显示,而在多线程中直接调用界面控件的方法是错误的做法,Invoke 和 BeginInvoke 就是为了解决这个问题而出现的,使你在多线程中安全的...
深入理解
Qt
信号
槽
简述 信号
槽
机制是观察者模式的一种应用,达到订阅-发布的效果。与之
类似
的有
C#
中的委托机制,只是写法有所不同。 深入信号
槽
1. 使用场合 信号
槽
实现的主体是connect函数,常有两种写法(利用SIGNAL、SLOT宏和使用&类名::函数的结构)。 需要注意connect除了可以连接信号和
槽
,还可以连接信号与信号、单个信号与多个
槽
、多个信号与单个
槽
。 2. 第五个参数 connect函数...
QT
对象树、信号和
槽
机制
个人总结
Qt
16,203
社区成员
26,591
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章