Qt跨窗口,控件类传递数据

本文最后更新于:4 个月前

问题简介

本文基于【Qt】窗体间传递数据(跨控件跨类),三种情况与处理方法

已知三个窗体,A为B C的父控件,B与C互为兄弟控件
那么参数传递分三种情况:

  1. B向A(C向A)传递参数
  2. B向C(C向B)传递参数
  3. A向B(A向C)传递参数

三个空间关系模型参考如下,

B向A(C向A)传递参数

1
2
3
4
5
6
7
8
9
10
11
12
//B.h
class B
{
signals:
void toA([ParamList]);
}

//B.cpp
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
//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)传递参数

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
//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)传递参数

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
//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]);
}