使用QT5.5开发一个程序,有时需要多个源文件,包括若干个头文件和若干个定义文件。因此如何在多个源程序间开发传递变量就成了一个关键问题。一般来说在多个源程序间传递变量大概有两种方法:

一、是将全局变量定义成一个类的静态变量,通过使用类名::变量名进行调用。

二、是利用extern声明全局变量来进行传递。

下面分别对这两种方法在QT中进行介绍:

第一种方法:

1)新建一个QT Console Application项目,命名为global_test,并新建global.cpp和global.h程序文件。

global.h,如下

#ifndef GLOBAL_H
#define GLOBAL_H
#include <QString>
#include <QtDebug>class message     //新建一个类存放全局变量
{
public:static QString display;};
#endif // GLOBAL_H

   global.cpp,如下:

#include"global.h"
QString  message::display="变量传递";

  main.cpp,如下:

#include <QCoreApplication>
#include"global.h"
class message;
int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);qDebug()<<"diapaly="<<message::display;//初始变量message::display="变量已改变";qDebug()<<"diapaly="<<message::display;//初始变量return a.exec();
}

  2)运行结果如图1-1,表明全局变量函数已建立,能够实现要求。

图1-1

第二种方法:

1)在global.h中添加:

extern QString display2;2)在global.cpp中添加
QString display2="extern 变量传递";3)在main.cpp中添加
 qDebug()<<"diapaly2="<<display2;
 display2="extern 变量传递已改变";
 qDebug()<<"diapaly2="<<display2;4)运行结果:如图1-2

图1-2

至此使用extern关键字 来定义全局变量,已完成。

小结:两种方法都能实现变量在QT中传递,但是这种方法有弊端,主要是如果在系统库函数中有和定义的全局变量同名的变量,将会造成冲突,其二是其结构不符合面向对象的思想,破坏封装性。因此还是使用第一种方法为好。

完整项目可以在:

https://github.com/xtuwang/Qt_Project/tree/xtuwang-patch-TEST下载。

转载于:https://www.cnblogs.com/xtu-wlf1212/p/8811131.html

QT中使用全局变量在多个源程序中传递变量相关推荐

  1. 在python中、关于全局变量和局部变量_在Python中,关于全局变量和局部变量,以下选项中描述不正确的是...

    [单选题]Python文本处理方向的第三方库是 [单选题]哪个选项的描述是正确的? [单选题]以下选项中属于Python语言中合法的二进制整数是 [单选题]以下说法错误的是: [单选题]下面属于B2B ...

  2. C++头文件中定义全局变量在多次引用时出现变量多次定义符号冲突的解决办法...

    如果头文件多次被include 则全局变量的定义不能写在这个头文件中 建议写在一个Cpp文件中, 然后要用时,   加   extern   头,   再声明一下下就可以用了 如 在.Cpp中 int ...

  3. c语言中全局变量内存,C语言——全局变量和局部变量在内存中的区别——及编译后的内存分区【栈-堆-全局存储区-文字常量区-程序代码区】...

    目录: 一:全局变量 二:局部变量 三:C语言经过编译之后将内存分为以下几个区域 (1)栈(stack) (2)堆(heap) (3)全局(静态)存储区 (4)文字常量区 (5)程序代码区 四:区别 ...

  4. SQL Server中常用全局变量介绍

    在SQL Server中,全局变量是一种特殊类型的变量,服务器将维护这些变量的值.全局变量以@@前缀开头,不必进行声明,它们属于系统定义的函数.下表就是SQL Server中一些常用的全局变量. 全局 ...

  5. java 私有全局变量_java中的全局变量

    知识点,转自网上 首先,java中是没有全局变量这个概念的,java程序中不能像C++那样在类外定义全局变量,因为JAVA当初出现的初衷就是为了安全性和跨平台性, 所以去掉了类似C.C++中的全局变量 ...

  6. c语言h文件定义变量,补习C语言之在.h文件中定义全局变量

    话说在一次整理code的时候,无意间将一个原本定义在.c文件中的全局变量移动到.h 文件中(此全局变量被多个.c文件使用),然后突然不能生成.ko(linux中可动态装载的驱动模块).怎么回事?难道是 ...

  7. php+控制器中的全局变量,php中的全局变量引用

    全局变量在函数外部定义,作用域为从变量定义处开始,到本程序文件的末尾.但和其他语言不同,php的全局变量不是自动设为可用的,在php中函数可以视为单独的程序片段,局部变量会覆盖全局变量的能见度,因此, ...

  8. java全局变量放在什么地方_java中的全局变量

    正在使用NetBeans做一个稍大点的程序,刚刚学习使用,感觉程序中需要用到全局变量(其实java中是没有全局变量这个概念的). 在网上查了不少的资料,得到一点点体会: 首先,java中是没有全局变量 ...

  9. qt如何定义全局变量_QT中全局变量的定义

    多的就不说了,本来就是一个简单地内容,只是不会的话会很头疼 我们首先新建两个文件,文件名可以自定义,我们在这里定义为variate.h 和 variate.cpp 当然了,后缀是不能变的. 和函数一样 ...

最新文章

  1. shell学习之shell基础知识了解
  2. php把数组函数封装,PHP删除Array数组里指定的key(完整版,已封装成函数,附测试代码)...
  3. [LintCode] Wildcard Matching
  4. c++ auto 关键字
  5. liunx 加入域控_让Linux使用Windows域控制器做用户认证
  6. 高智商孩子14个独有的特点
  7. Java程序员常犯的几类错误
  8. reveal end of document
  9. 叮叮叮 重点之中的python必备英语单词(2)来啦!请记得查收
  10. 怎样组合数字python_利用python实现数字组合
  11. week one(1)—What is machine learning?
  12. android图片底部居中对齐,Android 解决图文混排,图片和文字居中对齐问题(ImageSpan)...
  13. Springboot 项目打包 Compilation failure: Compilation failure:
  14. WIN10命令提示符/黑窗口/cmd打不开怎么办
  15. 筛选中很容易粘贴到被隐藏部分_excel复制粘贴:如何将数据粘贴到筛选区域中?...
  16. c语言常见运行错误提示,c语言运行时的错误提示
  17. 从头认识一遍“货到人”拣选
  18. ECCV 2020 论文大盘点-语义分割篇
  19. 【R语言】高维数据可视化| ggplot2中会“分身术”的facet_wrap()与facet_grid()姐妹花
  20. Jenkins Pipeline预研

热门文章

  1. PCL学习(三) SAC-IA 估记object pose
  2. AOP拦截器 表达式写法
  3. 字符串截取mysql
  4. ArcMAP获取要素的外包多边形
  5. 使用Google App Engine开始新的网站开发学习
  6. maven简单工具命令
  7. WriteableBitmap 巧学巧用
  8. java根据系统时间拼凑文件名字
  9. android全系统动态二进制分析--CopperDroid
  10. 浅谈SkyEye虚拟ECU