Qt一个project调用还有一个project的类成员变量
一句两句话已经不能表达如今的激动情绪了。唯有感叹知识的博大精深,并把感叹转变为文字。
同一个project调用其它类成员变量很easy。
如:
定义
Test1.h中申明成员变量
class A
{
public:
double m_fTest;
};
Test1.cpp中改变成员变量的值。
m_fTest = 265.78;
然后再类B中调用类A的成员变量m_fTest。并需求类A中改变该值时,类B中也要随之改变:
调用方法:包涵类A的头文件
#include “test1.h”
然后在调用处声明类A的对象:
A *a;
通过类A的对象来调用成员变量就可以:
a->m_fTest;
不同project中调用:
这就不能再像上面那样调用了,尽管也能调用到,但值不会随之改变,仅仅能调用到初始化值。
这就须要通过虚函数进行调用:
在project1中:
Test1.h中:
class A
{
public:
virtual void update();
virtual void onSimulationSlider(int n){};
};
并在虚函数中调用project2中的虚函数updateSimulation
Test2.h中:重写虚函数onSimulationSlider并在该虚函数中调用project2中的虚函数updateSimulation
#include “Test1.h”
class B
{
public:
double m_fTest;
void onSimulationSlider(int n){};
};
在project2中:Test3中调用类A中的虚函数:
#include “Test1.h”
A *mTest;
mTest ->onSimulationSlider(n);
然后在project1中的虚函数onSimulationSlider中操纵想要调用的成员变量。
假设在project2中的Test4中的类想通过Test3中的类调用该成员变量,能够通过消息。
比如:Test4是一个界面类,界面上有一个slider控件,点击slider后,想让project1中Test1中的成员变量m_fTest的值随slider的值变化而变化。
则Test3中的虚函数updateSimulation中须要调用在Test4中的虚函数update(重写Test1中的虚函数update)
Test4.h中:
声明信号和槽函数:
signals:
voidhorizontalSlider( int );
public slots:
voidonhorizontalSlider(int);
在Test4.cpp中:
重写Test1中的虚函数updata,并将slider的信号放在虚函数中
bool SimulationHardwareGUI::update()
{
QObject::connect(ui.m_Slider,SIGNAL(valueChanged(int)),this,SLOT(onhorizontalSlider(int)));
this->repaint();
return true;
}
定义槽函数onhorizontalSlider,并在槽函数中调用信号函数
void SimulationHardwareGUI::onhorizontalSlider(int n)
{
QSlider *ChangeSlider = qobject_cast<QSlider *>(sender());
if(ChangeSlider != NULL)
{
horizontalSlider( n );
}
}
在Test3中调用Test4的信号函数:
connect((QObject*)(m_SimulationHardware), SIGNAL(horizontalSlider(int )), this, SLOT(onSimulationSlider(int)));
并定义槽函数onSimulationSlider,在槽函数中调用Test1中的虚函数onSimulationSlider。
如此循环调用即能实现不同project的成员变量互调。
值得注意的是在槽函数和信号函数的參数仅仅能是类型,不能定义变量。
Qt一个project调用还有一个project的类成员变量的更多相关文章
- QT创建与调用Dll方法(包括类成员)--显式调用
看网上的好多关于QT调用Dll的方法,大部分都是调用函数的,并没有调用C++类成员的情况,即使是有,比如说: 使用Qt编写模块化插件式应用程序 Qt 一步一步实现dll调用(附源码)---(这一篇里没 ...
- C#一个窗体调用另一个窗体的方法
一个窗体调用另一个窗体的方法:例如:窗体B要调用窗体A中的方法1.首先在窗体A中将窗体A设为静态窗体public static FormA m_formA; //设此窗体为静态,其他窗体可调用此 ...
- vue中methods一个方法调用另外一个方法
转自http://blog.csdn.net/zhangjing1019/article/details/77942923 vue在同一个组件内: methods中的一个方法调用methods中的另外 ...
- WinForm中一个窗体调用另一个窗体
[转] WinForm中一个窗体调用另一个窗体的控件和事件的方法(附带源码) //如果想打开一个 Form2 的窗体类,只需要: Form2 form = new Form2(); //有没有参数得看 ...
- 在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解失效的原因和解决方法
参考原贴地址:https://blog.csdn.net/clementad/article/details/47339519 在同一个类中,一个方法调用另外一个有注解(比如@Async,@Trans ...
- 【转】在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解失效的原因和解决方法
参考 原文链接 @Transactional does not work on method level 描述 在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational) ...
- 编写Java程序,创建Dota游戏中的兵营类,兵营类有一个类成员变量count、一个实例变量name和另一个实例变量selfCount。
返回本章节 返回作业目录 需求说明: 创建Dota游戏中的兵营类 兵营类有一个类成员变量count.一个实例变量name和另一个实例变量selfCount. count表示的是兵营已经创建士兵的总数: ...
- 编写Java程序,创建一个 Person 类,该类中有一个类成员变量 country、一个实例变量 name 和另一个实例变量 age。
返回本章节 返回作业目录 需求说明: 创建一个 Person 类,该类中有一个类成员变量 country.一个实例变量 name 和另一个实例变量 age. country 表示地区,name 表示姓 ...
- java 中,new一个新对象时,是先给成员变量赋上初值后 再来调用类中的构造函数的。
今天学习时法现一个问题,我们定义了一个Test类,在主类中new了一个他的对象,发现:在新建对象中所有的成员变量是先给定了默认初值的:0,null或者false, 之后再调用的构造函数.(如果变量是由 ...
随机推荐
- jsoup使用选择器语法来查找元素
问题 你想使用类似于CSS或jQuery的语法来查找和操作元素. 方法 可以使用Element.select(String selector) 和 Elements.select(String sel ...
- Zend Framework 入门(2)—多国语言支持
如果你的项目想要支持多语言版本,那么就需要用到 Zend_Translate.Zend_Translate 的详细文档在这里,不过如果想偷懒的话,也很简单,在View Helpers 文档中介绍了如何 ...
- MyBatis association的两种形式——MyBatis学习笔记之四
一.嵌套的resultMap 这 种方法本质上就是上篇博文介绍的方法,只是把教师实体映射从association元素中提取出来,用一个resultMap元素表示.然后 association元素再引用 ...
- HDU 5730 Shell Necklace cdq分治+FFT
题意:一段长为 i 的项链有 a[i] 种装饰方式,问长度为n的相连共有多少种装饰方式 分析:采用dp做法,dp[i]=∑dp[j]*a[i-j]+a[i],(1<=j<=i-1) 然后对 ...
- IOS 本地通知UILocalNotification
//发送通知 UILocalNotification *notification=[[UILocalNotification alloc] init]; if (notificati ...
- 《Nagios系统监控实践》勘误
在翻译的过程中,虽然反反复复的检查了很多遍,但依然有所遗漏——这不,今天就收到了 @我是晓梦 的回复,指出了书中的一些错误. 从今天起,建立勘误表,记录这些错误,以便在下一次印刷时纠正,并对广大读者致 ...
- G-sensor驱动分析
重力传感器代码分析 重力传感器驱动的功能,主要是向HAL层提供IOCTRL接口,并通过input设备上报数据.芯片实际数据的读取是采用i2c协议读取原始数据,并且作为i2c设备挂载在系统上工作的. 1 ...
- 搭建linux下teamspeak3多人语音服务器
最近项目中新的需求,需要支持多人在线实时通话.就安装测试一下teamspeak.http://www.teamspeak.com/ 主页有服务器版本和客户端版本供下载安装.软硬件环境: melot@m ...
- 第三百零三天 how can I 坚持
今天年会,运气还不错,竟然中了个小奖,一个榨汁机,已经很满足了. 今天加上了她,感觉挺合适,就怕一句话聊不来就带搭不理的了.她很好,懂得知足,不攀比. 弟弟今天把房子首付交了,把贷款办完就算安心了,目 ...
- 第二百九十九天 how can I 坚持
不是傻,就是因为人太好了,我宁愿相信是我人太好了,好吧,我就是对人都挺好,这是病吗. 昨天一起吃的饭一起AA了,挺好,这种事就得AA,玩的挺happy. 还有.感觉自己好傻,老是遇事焦虑,以后试着改变 ...