Qt信号与槽传递参数的代码
时间: 2024-06-04 22:06:38 浏览: 88
以下是一个使用Qt信号与槽传递参数的示例代码:
// 假设有两个类 A 和 B
class A : public QObject
{
Q_OBJECT
public:
A() {}
~A() {}
signals:
void sendSignal(int value); // 定义一个带参数的信号
public slots:
void receiveSlot(int value) // 定义一个带参数的槽函数
{
qDebug() << "Received value: " << value;
}
};
class B : public QObject
{
Q_OBJECT
public:
B() {}
~B() {}
public slots:
void sendSlot() // 定义一个发送信号的槽函数
{
A *a = new A;
QObject::connect(a, &A::sendSignal, this, &B::receiveSlot); // 连接信号和槽函数
emit a->sendSignal(10); // 发送带参数的信号
}
void receiveSlot(int value) // 定义一个带参数的槽函数
{
qDebug() << "Received value: " << value;
}
};
// 在主函数中创建B类对象并调用sendSlot槽函数
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
B b;
b.sendSlot();
return a.exec();
}
在上面的代码中,类A定义了一个带有int类型参数的信号sendSignal和一个带有int类型参数的槽函数receiveSlot。类B定义了一个发送信号的槽函数sendSlot和一个带有int类型参数的槽函数receiveSlot。在sendSlot槽函数中,创建了一个类A的实例a,并将其sendSignal信号连接到类B的receiveSlot槽函数上。最后,通过emit关键字发送带有参数10的sendSignal信号。当该信号被发送时,类B的receiveSlot槽函数和类A的receiveSlot槽函数都会被调用,并输出接收到的参数值。
阅读全文