在我的代码中,我正在循环内创建相同类型的新对象,并将信号连接到对象插槽。这是我的审判。
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/