QT信号和槽详解


参考网址:

QT的信号与槽接收

QT信号和槽机制的优点

QT5中信号与槽的新语法

1.介绍:

特性: 多信号与单个的槽进行连接,也可以将单个的信号与很多的槽进行连接

槽处理机制: 当一个信号被发射时,与其相关联的槽将被立刻执行,就象一个正常的函数调用一样。 信号 - 槽机制完全独立于任何 GUI 事件循环。只有当所有的槽返回以后发射函数(emit)才返回 。 如果存在多个槽与某个信号相关联,那么, 当这个信号被发射时,这些槽将会一个接一个地 执行,但是它们执行的顺序将会是随机的、不确定的,我们不能人为地指定哪个先执行、哪 个后执行

槽函数的定义类型:

1.public slots:在这个区内声明的槽意味着任何对象都可将信号与之相连接。这对于组件编程非常有用,你可以创建彼此互不了解的对象,将它们的信号与槽进行连接以便信息能够正确的传递。
2.protected slots:在这个区内声明的槽意味着当前类及其子类可以将信号与之相连接。这适用于那些槽,它们是类实现的一部分,但是其界面接口却面向外部。
3.private slots:在这个区内声明的槽意味着只有类自己可以将信号与之相连接。这适用于联系非常紧密的类

关联等其他可参考以上网址;

2.信号和槽的优点缺点:

优点:

类型安全->可以同时接收信号和槽参数类型和参数个数必须相同;

松散耦合 -> 实现代码的高内聚和低耦合的渠道;

缺点:

运行效率比较低;比直接调用函数运行速度慢10倍(网上参考);

3. 新语法 :

connect(this, &Test::someSignal, this, &Test::someSlot);

具体参考对应的 网址; 也谢谢以上各位大神的讲解!!