不二如是 发表于 2016-10-7 15:03:37

60-信号与槽(Signals & Slots)小结

本帖最后由 不二如是 于 2016-10-21 14:26 编辑



到现在为止,信号和槽的两种建立及使用方法,我们都见过了~



[*]UI设计模式的信号和槽编辑

[*]代码实现


可以很负责任的告诉你:

对于Qt,信号和槽是Qt对象模型的重中之重!!!

学会了精通了信号和槽,那么Qt就会了80%!

先暂时不发散开扯。

看我这里,阿。

就目前我们看到这两种方式,UI或代码。

无疑UI下,直接自动完成创建,非常方便省事实力!

但注意了,在日常实际开发中,从界面完成信号和槽基本上就是对简单的按钮,搞一搞。

而复杂的界面部件之间的关系,只能依靠代码搞定,很简单,这样更安全!

灵活的信号和槽机制,无疑是把是把双刃剑。

好,不能怎样。

但,不好,那就会更加不好。。。

不仅出现信号乱发,无槽可用等等,会被客户骂的悲催事情。

而且整个程序很有可能因此而推倒重来!

后面会专门深化扯信号和槽,现在不急,先了解有个心理准备!



[*]信号

当客户需要让某个部件搞事情的时候,信号就会被这个对象发射。

当一个信号被发射,与其相关联的槽就会被执行。

信号和槽独立于任何GUI事件。

并且只有当槽返回emit()(你可以理解为:确认)才算完成一次信号和槽机制。

信号的声明必须在头文件定义!

Qt的signals关键字指出进入了信号声明区,随后即可声明自己的信号函数!



[*]槽

槽是普通的C++成员函数,可以被多个信号正常调用(后面细讲),有参数不能缺省值。

本次我们只使用了槽的一种类型:私有槽


槽函数其实有三种类型:


public slots 意味着任何对象都可将信号与其连接
protected slots 意味着当前类和子类可以将信号与之连接
private slots 意味着只有类自己可以将信号与之连接




先小结到这里,后续会隆重粉墨登场~{:10_341:}

wei_Y 发表于 2016-10-7 15:40:07

{:10_257:}还是pyqt简单些,槽没区分那么多。。

不二如是 发表于 2016-10-7 15:41:15

wei_Y 发表于 2016-10-7 15:40
还是pyqt简单些,槽没区分那么多。。

不过,到后期其实也用不到那么多

SylarPu 发表于 2018-5-22 14:50:17

我自己写了个SIGNAL类。可以正常连接和触发。
但是无法在触发的函数里面用到QT的任何部件
{:10_266:}{:10_266:}{:10_266:}
不二大神 知道怎么看pyqtsignal的具体实现么
页: [1]
查看完整版本: 60-信号与槽(Signals & Slots)小结