QT信号和槽详解
参考网址:
1.介绍:
特性: 多信号与单个的槽进行连接,也可以将单个的信号与很多的槽进行连接
槽处理机制: 当一个信号被发射时,与其相关联的槽将被立刻执行,就象一个正常的函数调用一样。 信号 - 槽机制完全独立于任何 GUI 事件循环。只有当所有的槽返回以后发射函数(emit)才返回 。 如果存在多个槽与某个信号相关联,那么, 当这个信号被发射时,这些槽将会一个接一个地 执行,但是它们执行的顺序将会是随机的、不确定的,我们不能人为地指定哪个先执行、哪 个后执行 。
槽函数的定义类型:
1.public slots:在这个区内声明的槽意味着任何对象都可将信号与之相连接。这对于组件编程非常有用,你可以创建彼此互不了解的对象,将它们的信号与槽进行连接以便信息能够正确的传递。
2.protected slots:在这个区内声明的槽意味着当前类及其子类可以将信号与之相连接。这适用于那些槽,它们是类实现的一部分,但是其界面接口却面向外部。
3.private slots:在这个区内声明的槽意味着只有类自己可以将信号与之相连接。这适用于联系非常紧密的类
关联等其他可参考以上网址;
2.信号和槽的优点缺点:
-
优点:
类型安全->可以同时接收信号和槽参数类型和参数个数必须相同;
松散耦合 -> 实现代码的高内聚和低耦合的渠道;
-
缺点:
运行效率比较低;比直接调用函数运行速度慢10倍(网上参考);
3. 新语法 :
connect(this, &Test::someSignal, this, &Test::someSlot);
具体参考对应的 网址; 也谢谢以上各位大神的讲解!!