本文最后更新于:4 个月前
问题简介
本文基于【Qt】窗体间传递数据(跨控件跨类),三种情况与处理方法
已知三个窗体,A为B C的父控件,B与C互为兄弟控件
那么参数传递分三种情况:
- B向A(C向A)传递参数
- B向C(C向B)传递参数
- A向B(A向C)传递参数
三个空间关系模型参考如下,
B向A(C向A)传递参数
1 2 3 4 5 6 7 8 9 10 11 12
| class B { signals: void toA([ParamList]); }
B::B() { emit toA([ParamList]); }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class A { private: B *b; private slots: void fromB([ParamList]); }
A::A() { b = new B; connect(b, SIGNAL(toA([ParamList])), this, SLOT(fromB([ParamList]))); }
void A::fromB([ParamList]) {
}
|
B向C(C向B)传递参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| { private: B *b; C *c; }
A::A() { b = new B; c = new C; connect(b, SIGNAL(toC([ParamList]), c, SLOT(fromB([ParamList]))); }
class B { signals: void toC([ParamList]); }
B::B() { emit toC([ParamList]); }
class C { private slots: void fromB([ParamList]); }
void C::fromB([ParamList]) {
}
|
A向B(A向C)传递参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| class B { public: void fromA([ParamList]); }
void B::fromA([ParamList]) {
}
class A { private: B *b; }
A:A() { b = new B; b->fromA([ParamList]); }
|