Qt 信号与槽函数:对象间通信的强大机制
connect 信号和槽函数是 Qt 中实现对象间通信的一种方式,通过连接信号和槽函数可以实现一些特定的功能,例如当一个对象发生某个事件时,可以发送一个信号,其他对象接收该信号并执行相应的操作。
connect 函数的语法如下:
connect(sender, signal, receiver, slot);
其中,sender 表示发送信号的对象,signal 表示信号名称,receiver 表示接收信号的对象,slot 表示槽函数名称。
在信号和槽函数中,可以使用任何类型的参数,例如整数、字符串、对象等。在连接时,需要确保信号和槽函数的参数类型和个数一致,否则连接将失败。
以下是一个简单的示例代码,演示了如何使用 connect 函数连接两个对象的信号和槽函数:
class Sender : public QObject
{
Q_OBJECT
public:
void sendSignal()
{
emit mySignal(42, 'hello world');
}
signals:
void mySignal(int, QString);
};
class Receiver : public QObject
{
Q_OBJECT
public slots:
void handleSignal(int i, QString str)
{
qDebug() << 'Received signal with parameters: ' << i << str;
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Sender sender;
Receiver receiver;
QObject::connect(&sender, SIGNAL(mySignal(int, QString)), &receiver, SLOT(handleSignal(int, QString)));
sender.sendSignal();
return app.exec();
}
在上述代码中,Sender 类中定义了一个名为 mySignal 的信号,Receiver 类中定义了一个名为 handleSignal 的槽函数。在 main 函数中,使用 connect 函数将 Sender 对象的 mySignal 信号连接到 Receiver 对象的 handleSignal 槽函数。当 Sender 对象调用 sendSignal 函数时,会发出 mySignal 信号,Receiver 对象会接收该信号并执行 handleSignal 槽函数,输出接收到的参数值。
原文地址: https://www.cveoy.top/t/topic/nXjM 著作权归作者所有。请勿转载和采集!