在Qt中,使用emit
关键字可以触发信号。下面是一个简单的示例:
首先,在信号发送方的类中声明信号:
class MySender : public QObject
{
Q_OBJECT
public:
explicit MySender(QObject *parent = nullptr);
signals:
void mySignal();
};
然后,在该类的某个函数中使用emit
来触发信号:
void MySender::triggerSignal()
{
emit mySignal();
}
接下来,在信号接收方的类中连接并处理该信号:
class MyReceiver : public QObject
{
Q_OBJECT
public:
explicit MyReceiver(QObject *parent = nullptr);
public slots:
void handleSignal();
};
MyReceiver::MyReceiver(QObject *parent) : QObject(parent)
{
// 连接信号与槽函数
connect(sender, SIGNAL(mySignal()), this, SLOT(handleSignal()));
}
void MyReceiver::handleSignal()
{
// 处理接收到的信号
}
最后,在合适的地方实例化发送方和接收方对象,并调用发送方对象的函数以触发信号:
MySender sender;
MyReceiver receiver;
sender.triggerSignal(); // 触发信号,会调用接收方对象的槽函数处理该信号
这样,当triggerSignal()
被调用时,就会触发mySignal()
信号,进而调用接收方对象的槽函数handleSignal()
进行处理。
内容由零声教学AI助手提供,问题来源于学员提问