找回密码
 立即注册
收起左侧

Qt 中怎么使用全局变量数组或者静态变量数组

26
回复
14378
查看
[复制链接]
累计签到:256 天
连续签到:1 天
来源: 2015-5-5 11:34:18 显示全部楼层 |阅读模式
2Qter豆
每次打开程序,都从A.cpp中获得一串数字,发送到B.cpp,B要发送一个数字给A,但是要先比对从A中获得的数字,如果有重复就不发送,没重复就发送。
如:
第一次:
A  1,2,3 -----> B
B 6 !=1,2,3,  ----->  A
第二次:
A 1,2,3,6 ------> B
B 2 = 1,2,3,6   -------->END
.................
我想问这一串数字要怎么才能保存下来 ? 模式我写的应该看得清,希望帮我解答一下

最佳答案

查看完整内容

可以使用文件或者QSetting之类的吗?
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-5-5 11:34:19 显示全部楼层
可以使用文件或者QSetting之类的吗?
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-5 14:02:10 显示全部楼层
一叶知秋 发表于 2015-5-5 12:51
可以使用文件或者QSetting之类的吗?

只要能达到这个要求 都可以 我现在就是弄不出来 说说你怎么弄?
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-5 14:04:58 显示全部楼层
一叶知秋 发表于 2015-5-5 12:51
可以使用文件或者QSetting之类的吗?

感觉用QSetting有一些麻烦呢 主要是想要这个数据简洁 微小
回复

使用道具 举报

累计签到:344 天
连续签到:1 天
2015-5-5 14:19:53 显示全部楼层
建一个类来保存,类的成员中有一个public的数组,你的数据就保存在这个数组中。要的时候调用那个类里面的数组就可以了。
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-5 14:22:19 显示全部楼层
新建一个.h和.cpp来保存么?
还是在A里面可以建这样一个数组?
我昨天就是了 我加了static结果总是错误
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-5 14:22:54 显示全部楼层
cai901022 发表于 2015-5-5 14:19
建一个类来保存,类的成员中有一个public的数组,你的数据就保存在这个数组中。要的时候调用那个类里面的数 ...

新建一个.h和.cpp来保存么?
还是在A里面可以建这样一个数组?
我昨天就试了 我加了static结果总是错误
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-5-5 14:36:01 显示全部楼层
看你的要求应该需要将A里面的东西永久保存的吧,是这样吗?还是程序下次启动的时候重头开始
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-5 14:36:17 显示全部楼层
cai901022 发表于 2015-5-5 14:19
建一个类来保存,类的成员中有一个public的数组,你的数据就保存在这个数组中。要的时候调用那个类里面的数 ...

现在的问题是 我可以用 但是里面没有数据 是乱码
我在A里面应该如果给他初值? 在构造函数里面我全部给它0
然后在调用的函数 我将需要的值赋给它
在B里面调用之后 还是0
如果不给初值0
直接用就是乱码。、、、
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-5 14:43:26 显示全部楼层
一叶知秋 发表于 2015-5-5 14:36
看你的要求应该需要将A里面的东西永久保存的吧,是这样吗?还是程序下次启动的时候重头开始 ...

A启动的时候会自动将表里面的某列数据(数字)储存到一个“地方”(我定义在A的类里面定义了一个int arr[255])
我现在试着用arr来装,是在一个btn的槽函数里面装
然后 只要函数结束貌似就没东西了 我B里面调用这个数组 就是一串地址乱码
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-5-5 15:03:43 显示全部楼层
是不是你的代码写错了
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-5 15:14:04 显示全部楼层
一叶知秋 发表于 2015-5-5 15:03
是不是你的代码写错了

A的构造函数:
    setWindowTitle(QObject::tr("控制器管理"));
    setMinimumSize(900,400);
    //setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint);
    m_setLayout();
    connectDatabase();
    bool tmp = m_button[0]->isEnabled();
    qDebug() << tmp;
    if(!tmp) {
        int i = m_tableWidget->rowCount();           //获取行号
        qDebug() << i;
        int j = 0;
        for(j=0;j<100;j++) {
            arr[j] = 1;
            qDebug() << arr[j];
        }
    }
    arr[2] = 3;
    connect(m_button[0], SIGNAL(clicked()), this, SLOT(showChild1()));
    connect(m_button[2], SIGNAL(clicked()), this, SLOT(deleteRow()));
showChild1() 是showB窗口出来
bool tmp = m_button[0]->isEnabled();
    qDebug() << tmp;
    if(!tmp) {
是判断当按下button[0]的时候进行赋值
B执行出来 qDebug()<<arr[0] [1] [2],
只有2赋值成功
回复

使用道具 举报

累计签到:344 天
连续签到:1 天
2015-5-5 15:26:43 显示全部楼层
z55716368 发表于 2015-5-5 14:36
现在的问题是 我可以用 但是里面没有数据 是乱码
我在A里面应该如果给他初值? 在构造函数里面我全部给它 ...

用法错了,你定义应该要在C的类里面定义。然后用A和B来调用C这个类。相当于重新建一个C.cpp
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-5 15:31:23 显示全部楼层
cai901022 发表于 2015-5-5 15:26
用法错了,你定义应该要在C的类里面定义。然后用A和B来调用C这个类。相当于重新建一个C.cpp ...

我在A.h声明了arr
在A.cpp的构造函数里面定义arr
B也可以调用了
就是 每次关掉B回到A的时候 arr都会重新定义一次 这里感觉有点瑕疵
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-5 15:32:23 显示全部楼层
cai901022 发表于 2015-5-5 15:26
用法错了,你定义应该要在C的类里面定义。然后用A和B来调用C这个类。相当于重新建一个C.cpp ...

谢谢你的帮助了 现在对这种类型的东西有一些心得了
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-5-5 15:36:52 显示全部楼层
bool tmp = m_button[0]->isEnabled()是用来判断什么的?按键按下?
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-5 15:42:35 显示全部楼层
一叶知秋 发表于 2015-5-5 15:36
bool tmp = m_button[0]->isEnabled()是用来判断什么的?按键按下?

现在出现了一个大问题、、
我在B里面A nn;
nn arr.........
这里貌似重新进行了A的构造函数啊 我就不能进行对比了 那个arr里面每次都会先添加我要传的数 怎么整、、
那个bool 我取消了 我开始以为是返回按键按下 结果它一直都是true
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-5 15:53:14 显示全部楼层
一叶知秋 发表于 2015-5-5 15:36
bool tmp = m_button[0]->isEnabled()是用来判断什么的?按键按下?

问题解决了 原来是有一个地方的循环太多 包含了我发送的数字 所以没发出去 谢谢你的帮忙
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-5-5 16:21:01 显示全部楼层
突然发现你提得问题好多啊,我回答的好多问题都是你的,哈哈。。。
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-5 16:42:50 显示全部楼层
一叶知秋 发表于 2015-5-5 16:21
突然发现你提得问题好多啊,我回答的好多问题都是你的,哈哈。。。

因为好多都不懂 现在就在实习了 C++就一点基础 全部在用Qt写程序写窗口 好多好多问题、、、、、、、、
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了