本文最后更新于: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]); }
 
  |