【发布时间】:2022-01-13 06:50:11
【问题描述】:
我正在学习 C++ 中的无人机编程。我找到了这个功能:
void Vehicle::_announceArmedChanged(bool armed)
但是我搜索的时候,所有的代码都调用了这个函数,不带参数,比如:
connect(this, &Vehicle::armedChanged, this, &Vehicle::_announceArmedChanged);
在这种情况下,程序从哪里获得armed 状态?
【问题讨论】:
-
您可能正在查看定义,而声明可能声明了默认参数。见这里:stackoverflow.com/questions/4989483/…
-
@463035818_is_not_a_number
connect将成员函数作为参数 ;) -
等一下...
connect(this, &Vehicle::armedChanged, this, &Vehicle::_announceArmedChanged);没有调用该函数。它将函数指针传递给connect,该函数在其他地方被调用 -
这看起来像一个 Qt 信号/槽连接,它实际上只是创建了一个路径,信号通过该路径发出一个值并将其传递给一个槽。但它不执行该操作。寻找像
emit armedChanged(true);或其他涉及armedChanged的连接,这些连接可能会链接来自其他地方的信号(例如按钮“按下”信号) -
这实际上是一个“特定于 Qt”的问题。您使用此函数注册回调。每次调用
anncounceArmedChanged,都会触发信号armedChanged。这个调用将包含传递给信号的任何参数。