gpt4 book ai didi

c++ - 根据多个信号运行一个函数

转载 作者:行者123 更新时间:2023-11-27 22:33:33 24 4
gpt4 key购买 nike

我有两个不一定同时收到的信号。

第一个信号

第一个信号由 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;
}

我打算根据两个条件运行一些代码(如函数):

  1. 收到第一个信号,即 ready
  2. 接收到第二个信号,即 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com