C++ 如何获取Qt5中从信号传输到插槽的数据?
我是Qt的新手,现在我使用信号和插槽。我想定义一个信号C++ 如何获取Qt5中从信号传输到插槽的数据?,c++,qt,qt5,signals-slots,qt-signals,C++,Qt,Qt5,Signals Slots,Qt Signals,我是Qt的新手,现在我使用信号和插槽。我想定义一个信号 void send(int); 并在A.cpp中以一些int值(如“5”)发出此信号 emit send(5); 之后,在B.h中,我定义了一个槽 void receive(int i); 使用连接功能,我连接信号和插槽 connect(a,&a::send,b,&receive); 然后这两个刚刚连接,int值5成功传输到插槽接收。它也可用于接收领域。 但困扰我的是,我如何获得这个值或这个“5”,并在接收函数之外使
void send(int);
并在A.cpp中以一些int值(如“5”)发出此信号
emit send(5);
之后,在B.h中,我定义了一个槽
void receive(int i);
使用连接功能,我连接信号和插槽
connect(a,&a::send,b,&receive);
然后这两个刚刚连接,int值5成功传输到插槽接收。它也可用于接收领域。
但困扰我的是,我如何获得这个值或这个“5”,并在接收函数之外使用它。我已经在这一步上呆了好几天了,所以我希望有人能给我一些想法或指导,非常感谢。假设你的B类看起来像这样,创建一个成员并将收到的值存储在那里
class B : public QObject
{
Q_OBJECT
public:
explicit B(QObject *parent = nullptr) noexcept : QObject{parent} {}
void received(int value) { m_receivedValue = value; }
private:
int m_receivedValue{0};
};
在您的方法中,您可以使用存储的值,例如
void printReceivedValue const noexcept{qDebug您可以使用一个变量来存储函数receiveint i的i参数值。干杯,伙计,我尝试过您的解决方案,但输出是0,对吗?为什么m_receivedValue被定义为int m_receivedValue{0}不是int m_receivedValue?@muyuanzhang我添加了一些解释谢谢你的回复伙伴,我能理解你的更新,值以及m_receivedValue可以打印在函数received中。这很有用。我应该说清楚,这是我的错,真正让我困惑的是,值和m_receivedValue都只存在如果我想在其他地方使用值,比如在类B中的新函数received_2中,这可能吗?
void received(int value)
{
m_receivedValue = value;
printReceivedValue();
}