Qt 信号槽 signals slots 特性 限定符的区别

Qt 信号槽 signals slots 特点 限定符的区别

 

1. 信号槽应用于对象间通信。

2. 信号槽的处理借助于moc(Meta Object Compiler)工具,Q_OBJECT宏通知compiler使用moc工具进行moc扩展。

3. 对象中的信号不是真正的函数,编译时由moc自动产生,返回类型void,槽是函数。

4. 多个被触发者执行顺序随机。

5. 在非跨线程场景下,槽返回后,emit()才返回。此时Object::connect函数的ConncetionType参数为Qt::DirectConnection。

6. 槽参数不能有缺省值。

7. public slots:任何对象的信号或槽都可以触发;protected slots:当前类中的对象与子类中的对象的信号或槽可以触发;private slots:本类中定义的信号或槽可以触发。

8. 信号形参会全部传递给槽,但后者不一定全部接收。

9. moc 不扩展宏,所以信号与槽参数中不能包含宏。

10. 构造函数、嵌套类与友元类,不能在 signals: or slots: 区域内声明。

11. typedef之前,函数指针与模板类不能作为槽的参数。

12. 信号与事件的区别是事件可以触发信号,事件关注控件的实现,而信号关注其使用。