• 10181阅读
  • 13回复

[提问]Qt Widgets Application如何设置全局变量? [复制链接]

上一主题 下一主题
离线liaopifan
 

只看楼主 倒序阅读 楼主  发表于: 2016-01-24


上图是我定义的全局变量,但为什么在不同的槽中无法起到全局变量的作用呢?是不是我定义错了?
虔诚的小白一个求大神指点~~~~~
离线liaopifan

只看该作者 1楼 发表于: 2016-01-24
离线彩阳

只看该作者 2楼 发表于: 2016-01-24
这个不是全局私有变量。
上海Qt开发联盟,热忱地欢迎你的加入!
离线yanwuyue

只看该作者 3楼 发表于: 2016-01-24
这是MainWindow的私有变量啊,
每次实例化MainWindow都是一个新的saveFilename
离线kaon

只看该作者 4楼 发表于: 2016-01-25
继承QApplication, 不知道这样是不是正确的方式
离线fomalhaut

只看该作者 5楼 发表于: 2016-01-25
没看懂你想要做什么。
离线liaopifan

只看该作者 6楼 发表于: 2016-01-25

我这是个记事本程序,图中是MainWindow的几个槽,我想让这几个槽共用一个变量,也就是saveFileName
程序源代码 mynotepad.zip (7 K) 下载次数:1
离线liaopifan

只看该作者 7楼 发表于: 2016-01-25
同志们感谢~~别沉
别称
离线fomalhaut

只看该作者 8楼 发表于: 2016-01-25
这个问题与Qt无关,是C++的问题。
你在成员函数中这样写:
  1. QString saveFileName = QFileDialog::getSaveFileName(this,"Save File",QDir::currentPath());
实际上是定义了一个局部变量saveFileName。你的成员函数访问到的是局部变量,那么自然各函数中,同一函数的多次调用中,值都会不一样。
正确的写法是这样:
  1. saveFileName = QFileDialog::getSaveFileName(this,"Save File",QDir::currentPath());

离线liaopifan

只看该作者 9楼 发表于: 2016-01-25
恩恩解释的很清楚,真的解决了!学习到了!
我又重新定义了一个局部变量。
不过顺便再问一下,在头文件里能通过我的那种方式定义的变量算是全局变量吗?
离线fomalhaut

只看该作者 10楼 发表于: 2016-01-25
回 liaopifan 的帖子
liaopifan:恩恩解释的很清楚,真的解决了!学习到了![表情]
我又重新定义了一个局部变量。
不过顺便再问一下,在头文件里能通过我的那种方式定义的变量算是全局变量吗? (2016-01-25 11:47) 

这样的变量不是全局变量,而是类的成员变量。
离线liaopifan

只看该作者 11楼 发表于: 2016-01-25
回 fomalhaut 的帖子
fomalhaut:这样的变量不是全局变量,而是类的成员变量。 (2016-01-25 12:03) 

太感谢你了
离线liaopifan

只看该作者 12楼 发表于: 2016-01-25
要是想设置全局变量,应该怎么做呢?
离线yl19823442

只看该作者 13楼 发表于: 2016-01-25
回 liaopifan 的帖子
liaopifan:要是想设置全局变量,应该怎么做呢?[表情] (2016-01-25 12:58)

跟普通C程序一个样,没什么区别:
1、在某一个cpp源文件中开头的地方定义就行了(不是在类中定义),如:int  XXX = 100;
2、然后在需要使用的cpp文件中申明:extern int XXX;
快速回复
限100 字节
 
上一个 下一个