假设我有一个QPushButton小部件,它通过clicked()信号连接到插槽。第一个插槽依次通过emit关键字调用另一个插槽。第二个插槽从第一个插槽中获取参数并对其执行某些操作。它起作用了,但根据我对信号槽图案的理解,发出信号才有意义。发出一个插槽而不是一个信号是错误的吗?
答案 0 :(得分:9)
如果查看emit的定义,可以看到它是空的。 emit仅用于指示在该行发出信号。因此,发射插槽没有意义。
插槽是常规功能,您可以明确地调用它们。
答案 1 :(得分:6)
是。插槽是一种功能。您可以像C ++ doSlotAction(params);
中的任何其他函数一样调用插槽。只有信号应遵循emit
关键字。
答案 2 :(得分:3)
为了完成之前的答案,信号实际上是由元对象编译器moc实现的受保护方法。