首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

Qt中类之间的值传递解决思路

2012-04-09 
Qt中类之间的值传递有两个类,比如A和B,A中有个QComboBox的控件,控件动作改变了一个QString,要把这个变了的

Qt中类之间的值传递
有两个类,比如A和B,A中有个QComboBox的控件,控件动作改变了一个QString,要把这个变了的值传递到类B中来动态显示,怎么实现呢?
看网上大家分享的方法是新建一个类只放这个可以称为全局变量的东西,我这里最好不要新建类,能有别的可以在类B中直接引用类A中的变量的方法吗?
求助!

[解决办法]
楼主看看QT的信号和槽机制,这可是用QT必备的!很强大的
[解决办法]
类之间传值不需要信号和槽那样的机制吧,C++中直接函数调用通过参数传递不就可以了
[解决办法]
信号槽方式 相比 接口调用 可以降低耦合。
A只管发信号,B爱处理不处理。也许C喜欢来处理。
[解决办法]
A中一个public方法,然后B通过这个public方法来取得,如果要A通知B的话最好用信号方式
[解决办法]
首先你先弄清楚A,B,C的层级关系,照你所说大概可以认为A包含B和C。
C出现的时候,A肯定已经在了。而你在C里面又定义了一个A,显然这个A和你想改变的A不是同一个对象,所以你看不到变动。

这时候你需要把C的值,转给A。(信号槽)
或者构造C的时候把A的指针传进去。不需要在C里再构造A。(方法调用,有点类似回调)

[解决办法]
只说A和C可能让你混淆了。
建议你熟悉一下C++的面向对象相关。还有看Qt文档 Signals & Slots

以下是信号槽的方式大概实现:

C/C++ code
  class MainWindow {...    MainWindow(...)    {        A *objA = new A(this);        C *objC = new C(this);        connect(objC, SIGNAL(textChanged(QString)), objA, SLOT(setLabel(QString)));    }}
[解决办法]
探讨
信号 油槽 就是干这个的。改变的时候发个信号就可以了。B类 定义一个油槽

[解决办法]
用信号槽机制传参

热点排行