gpt4 book ai didi

c++ - 信号 - 循环内的槽连接

转载 作者:行者123 更新时间:2023-11-30 01:31:23 27 4
gpt4 key购买 nike

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

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++;

}

当发出 somethingHappened 信号时。两个对象槽都被调用。但我需要单独处理它们。将信号连接到循环内的插槽是否错误?如果不是,我怎么能实现我的愿望呢?

最佳答案

如果我理解正确的话,你可能想做这样的事情?

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/

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