6

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

4

3 回答 3

9

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

插槽是常规函数,您可以显式调用它们。

于 2010-02-08T11:41:27.133 回答
6

是的。插槽是一个函数。您可以像 C++ 中的任何其他函数一样简单地调用插槽doSlotAction(params);。只有信号应该跟在emit关键字后面。

于 2010-02-08T11:36:17.707 回答
3

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

于 2010-02-08T11:46:22.193 回答