我有两个不一定同时收到的信号。
第一个信号
第一个信号由 MyClass
发出,并由 MyClass
的插槽处理:
QObject::connect(this, &MyClass::ready,
this, &MyClass::handleReady);
void MyClass::handleReady()
{
qDebug() << "Ready to do next step";
}
// ... somewhere in MyClass implementation, signal is emitted:
emit ready();
第二个信号
第二个信号由成员对象发出,并由 MyClass
的插槽处理:
QObject::connect(m_member, &MemberClass::enabledChanged,
this, &MyClass::handleEnabledChange);
//...
void MyClass::handleEnabledChange(const bool enabled)
{
qDebug() << "Is member enabled?" << enabled;
}
我打算根据两个条件运行一些代码(如函数):
- 收到第一个信号,即
ready
- 接收到第二个信号,即
enabledChanged
,其 bool 参数为true
我不知道如何检查是否满足上述条件。
更新
现在我的信号数增加到三个。所以我的代码执行取决于三个条件。
最佳答案
在 MyClass 中编写一个方法,检查两个条件是否都为真,并在两个槽中调用该方法。使条件成为 myClass 的成员
bool MyClass::areBothConditionsTrue() {
if(m_conditionA && m_conditionB)
return true:
return false;
}
void MyClass::handleReady()
{
qDebug() << "Ready to do next step";
m_conditionA = true;
bool b = areBothConditionsTrue();
}
void MyClass::handleEnabledChange(const bool enabled)
{
qDebug() << "Is member enabled?" << enabled;
m_conditionB = enabled;
bool b = areBothConditionsTrue();
}
进一步的代码取决于你想用这些信息做什么
关于c++ - 根据多个信号运行一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57991137/