qt cpp 两个自定义类如何用信号和槽
时间: 2023-05-14 11:06:19 浏览: 68
来进行通信?
可以通过在类中定义信号和槽函数来实现两个自定义类之间的通信。首先,在类的头文件中声明信号和槽函数,例如:
class ClassA : public QObject
{
Q_OBJECT
public:
explicit ClassA(QObject *parent = nullptr);
signals:
void signalA();
public slots:
void slotA();
};
class ClassB : public QObject
{
Q_OBJECT
public:
explicit ClassB(QObject *parent = nullptr);
public slots:
void slotB();
};
然后,在类的实现文件中实现信号和槽函数,例如:
ClassA::ClassA(QObject *parent) : QObject(parent)
{
}
void ClassA::slotA()
{
emit signalA();
}
ClassB::ClassB(QObject *parent) : QObject(parent)
{
}
void ClassB::slotB()
{
qDebug() << "ClassB::slotB()";
}
最后,在使用这两个类的地方,连接信号和槽函数即可:
ClassA *a = new ClassA;
ClassB *b = new ClassB;
QObject::connect(a, &ClassA::signalA, b, &ClassB::slotB);
当 ClassA 中的 signalA() 函数被调用时,会自动触发 ClassB 中的 slotB() 函数。