我有一个简单的类,我将创建比方说该类的 100 个实例。
有没有办法在创建实例之前(因为一个一个地连接每个对象)显然是一项令人厌烦的工作)。
提前感谢任何想法,我很高兴欢迎任何不同的方法。
最佳答案
有一种简单的方法可以通过使用实例化类将自己连接到的单例类来实现:
将提供单一入口点的单例类:
class Linker : public QObject
{
Q_OBJECT
public:
static Linker * getInstance(QObject *parent = 0)
{
static Linker * instance = new Linker(parent);
return instance;
}
sendSignal()
{
emit mySignal();
}
signals:
void mySignal();
};
要实例化的类:
class ClassToBeInstencied : public QObject
{
Q_OBJECT
private slots:
void mySlot() {}
public:
ClassToBeInstencied() // constructor
{
connect(this, &ClassToBeInstencied::mySlot, Linker::getInstance(), &Linker::mySignal);
}
};
这样做的好处是让您的代码保持干净和简单,因为您不必在类外部处理与信号/槽的连接,因此封装得很好。
您只需要创建一个新实例:
ClassToBeInstencied * a = new ClassToBeInstencied();
ClassToBeInstencied * b = new ClassToBeInstencied();
ClassToBeInstencied * c = new ClassToBeInstencied();
连接会自动完成。
您可以直接向所有人发送信号:
Linker::getInstance()->sendSignal();
优点:没有列表,没有循环,不需要在类外管理,也不需要手动连接每个实例。
关于c++ - 如何将信号连接到一个类的所有实例的插槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45059490/