Qt - 发射时隙而不是信号

时间:2010-02-08 11:31:38

标签: qt signals-slots

假设我有一个QPushButton小部件,它通过clicked()信号连接到插槽。第一个插槽依次通过emit关键字调用另一个插槽。第二个插槽从第一个插槽中获取参数并对其执行某些操作。它起作用了,但根据我对信号槽图案的理解,发出信号才有意义。发出一个插槽而不是一个信号是错误的吗?

3 个答案:

答案 0 :(得分:9)

如果查看emit的定义,可以看到它是空的。 emit仅用于指示在该行发出信号。因此,发射插槽没有意义。

插槽是常规功能,您可以明确地调用它们。

答案 1 :(得分:6)

是。插槽是一种功能。您可以像C ++ doSlotAction(params);中的任何其他函数一样调用插槽。只有信号应遵循emit关键字。

答案 2 :(得分:3)

为了完成之前的答案,信号实际上是由元对象编译器moc实现的受保护方法。

相关问题