在我的代码中,我正在循环内创建相同类型的新对象,并将信号连接到对象插槽。这是我的审判。

A * a;
QList<A *> aList;
int aCounter = 0;
while(aCounter < 2)
{
   a = new A;
   aList.push_back(a);
   connect(this,SIGNAL(somethingHappened()),aList[aCounter],SLOT(doSometing()));
   aCounter++;

}

当发生某种情况时发出信号。两个对象插槽均被调用。但是我需要分开处理它们。
将信号连接到环路内的插槽是否错误?
如果没有,我怎么能实现自己的愿望?

最佳答案

如果我对您的理解正确,那么您可能想做这样的事情?

A * a;
QList<A *> aList;
int aCounter = 0;
while(aCounter < 2)
{
   a = new A;
   aList.push_back(a);

   if ( aCounter == 0 )
      connect(this,SIGNAL(somethingHappened()),aList[aCounter],SLOT(doSometing()));

   aCounter++;
}

这仅将信号连接到第一个对象(但这很明显)。无法将信号连接到多个插槽,而只能将其发送到一个插槽。

如果这确实是您的意图,那么如果您实际上将其连接到回路之外,则会更加优雅。

另一种可能性是像以前一样连接所有内容,但在A的每个实例中存储某种类型的ob成员变量,并使doSomething()的行为依赖于此。

关于c++ - 信号-回路内的插槽连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3109392/

10-10 18:32