一句两句话已经不能表达如今的激动情绪了。唯有感叹知识的博大精深,并把感叹转变为文字。

同一个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的类成员变量的更多相关文章

  1. QT创建与调用Dll方法(包括类成员)--显式调用

    看网上的好多关于QT调用Dll的方法,大部分都是调用函数的,并没有调用C++类成员的情况,即使是有,比如说: 使用Qt编写模块化插件式应用程序 Qt 一步一步实现dll调用(附源码)---(这一篇里没 ...

  2. C#一个窗体调用另一个窗体的方法

    一个窗体调用另一个窗体的方法:例如:窗体B要调用窗体A中的方法1.首先在窗体A中将窗体A设为静态窗体public static  FormA   m_formA; //设此窗体为静态,其他窗体可调用此 ...

  3. vue中methods一个方法调用另外一个方法

    转自http://blog.csdn.net/zhangjing1019/article/details/77942923 vue在同一个组件内: methods中的一个方法调用methods中的另外 ...

  4. WinForm中一个窗体调用另一个窗体

    [转] WinForm中一个窗体调用另一个窗体的控件和事件的方法(附带源码) //如果想打开一个 Form2 的窗体类,只需要: Form2 form = new Form2(); //有没有参数得看 ...

  5. 在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解失效的原因和解决方法

    参考原贴地址:https://blog.csdn.net/clementad/article/details/47339519 在同一个类中,一个方法调用另外一个有注解(比如@Async,@Trans ...

  6. 【转】在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解失效的原因和解决方法

    参考 原文链接 @Transactional does not work on method level 描述 在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational) ...

  7. 编写Java程序,创建Dota游戏中的兵营类,兵营类有一个类成员变量count、一个实例变量name和另一个实例变量selfCount。

    返回本章节 返回作业目录 需求说明: 创建Dota游戏中的兵营类 兵营类有一个类成员变量count.一个实例变量name和另一个实例变量selfCount. count表示的是兵营已经创建士兵的总数: ...

  8. 编写Java程序,创建一个 Person 类,该类中有一个类成员变量 country、一个实例变量 name 和另一个实例变量 age。

    返回本章节 返回作业目录 需求说明: 创建一个 Person 类,该类中有一个类成员变量 country.一个实例变量 name 和另一个实例变量 age. country 表示地区,name 表示姓 ...

  9. java 中,new一个新对象时,是先给成员变量赋上初值后 再来调用类中的构造函数的。

    今天学习时法现一个问题,我们定义了一个Test类,在主类中new了一个他的对象,发现:在新建对象中所有的成员变量是先给定了默认初值的:0,null或者false, 之后再调用的构造函数.(如果变量是由 ...

随机推荐

  1. solr4.5配置中文分词器mmseg4j

    solr4.x虽然提供了分词器,但不太适合对中文的分词,给大家推荐一个中文分词器mmseg4j mmseg4j的下载地址:https://code.google.com/p/mmseg4j/ 通过以下 ...

  2. windows各种程序中文显示乱码又找不到原因时

    我电脑上的各种程序,如xshell,Navicat for MySQL都不正常显示中文,该软件的编码,utf-8,gbk,gb2312来回切换好几回,没一次正常,最好解决办法如下       进入控制 ...

  3. 解决duilib使用zip换肤卡顿的问题:修改duilib并使用资源文件换肤

    转载请说明原出处,谢谢~~ 今天在做单子是,客户要求做换肤功能,为此我专门写了一个换肤函数,并且把各种皮肤资源压缩为各个zip文件来换肤.但是客户反映程序运行缓慢,我测试后发现的确明显可以看出慢了不少 ...

  4. java Ant 的使用

    Apache Ant 1.7.0 is the best available version的下载地址:http://ant.apache.org/bindownload.cgi 部署: 参考JAVA ...

  5. IOS-day02_OC中类的声明

    在上一个笔记中类的使用中,在编译链接的时候会有警告,原因就是我们没有对类进行声明 类的声明如下:使用关键字@interface #import <Foundation/Foundation.h& ...

  6. Seam carving 学习笔记

    今天首次接触了图像编辑中的seam carving知识,感觉挺神奇的.虽然我自己可能理解的不是很深刻,但是记录下来,总是好的. seam carving直接翻译过来是“线裁剪”的意思.它的主要用途是对 ...

  7. UML统一建模语言

    概述 统一建模语言(UML)是一种图形化的语言,用于软件密集系统要素的可视化.制定规范.构建对象和编写文档.UML提供了一种标准的方式来描述系统的设计图,既包括概念方面,例如业务过程和系统功能,也包括 ...

  8. C++容器学习

    以前自学C++的时候就没怎么看容器,一直以来也没怎么编过C++程序,现在想用C++写点东西,突感容器类型有些生疏,故做此笔记.(参考<C++ primer> 容器:容纳特定类型对象的集合. ...

  9. 在window server 2008 64位系统上 发布网站的过程中遇到的问题

    发布网站的过程如下: 1.安装数据库系统2.建立数据库,执行sql3.安装iis4.在本地机子上发布网站5.把发布好的东西拷贝到IIS上 1.安装数据库系统: 出现错误:必须使用角色管理工具 安装或配 ...

  10. 《Java数据结构与算法》笔记-CH2无序数组

    /** * 本章目标: * 1.自制数组类 * 2.有序数组:按关键字升降序排列:二分法查找 * 3.分析有序数组.大O表示法 */ /** * 自制数组类 书中有的地方有错误,本程序以修改 */ c ...