问题简介
本文基于【Qt】窗体间传递数据(跨控件跨类),三种情况与处理方法
已知三个窗体,A 为 B C 的父控件,B 与 C 互为兄弟控件 那么参数传递分三种情况:
- B 向 A(C 向 A)传递参数
- B 向 C(C 向 B)传递参数
- A 向 B(A 向 C)传递参数
三个空间关系模型参考如下,
B 向 A(C 向 A)传递参数
//B.h
class B
{
signals:
void toA([ParamList]);
}
//B.cpp
B::B()
{
emit toA([ParamList]);
}
//A.h
class A
{
private:
B *b;
private slots:
void fromB([ParamList]);
}
//A.cpp
A::A()
{
b = new B;
connect(b, SIGNAL(toA([ParamList])), this, SLOT(fromB([ParamList])));
}
void A::fromB([ParamList])
{
//get[ParamList]
}
B 向 C(C 向 B)传递参数
//A.h
{
private:
B *b;
C *c;
}
//A.cpp
A::A()
{
b = new B;
c = new C;
connect(b, SIGNAL(toC([ParamList]), c, SLOT(fromB([ParamList])));
}
//B.h
class B
{
signals:
void toC([ParamList]);
}
//B.cpp
B::B()
{
emit toC([ParamList]);
}
//C.h
class C
{
private slots:
void fromB([ParamList]);
}
//C.cpp
void C::fromB([ParamList])
{
//get[ParamList]
}
A 向 B(A 向 C)传递参数
//B.h
class B
{
public:
void fromA([ParamList]);
}
//B.cpp
void B::fromA([ParamList])
{
//get[ParamList]
}
//A.h
class A
{
private:
B *b;
}
//A.cpp
A:A()
{
b = new B;
b->fromA([ParamList]);
}