Qt下的全局变量的定义及其调用

这个折磨我整整一天呀,不断的调试,我想定义一个全局的结构体,是的可以在不同的.cpp

文件夹中使用,但是刚开始遇到了很多困难,怎样都引用不成功,最后终于写好extern和static下的定义

在自定义.h文件中声明,.cpp文件中赋值

在其他文件中引用需要加上自定义的头文件和 声明

 

 

如果在自定义的data文件使用extern定义的结构体

在data.h文件中

#ifndef DATA_H
#define DATA_H

#include <QObject>
typedef struct
{
    int a;
    char b;
}enen;
extern enen enen1;  //声明
extern enen enen2;
class Data : public QObject
{
    Q_OBJECT
public:
    explicit Data(QObject *parent = nullptr);
    void getdata();

signals:

public slots:
};

#endif // DATA_H

data.cpp中对定义的结构体赋值

 

#include "data.h"
//enen enen1;
Data::Data(QObject *parent) : QObject(parent)
{

}
void Data::getdata()
{
    enen1.a=10;  //赋值
    enen2.a=20;
}

在MainWindow中引用

MainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include<data.h>
#include <QMainWindow>
#include<ceshi.h>
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
   Data *en;
   Ceshi *aa;
private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

MainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include<QDebug>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    en=new Data(this);
    en->getdata();
    aa=new Ceshi(this);
   // enen1.a=10;
    qDebug()<<enen1.a<<endl;  //引用
    qDebug()<<enen2.a<<endl;
     aa->pp();
    qDebug()<<enen1.a<<endl;
    qDebug()<<enen2.a<<endl;
}

MainWindow::~MainWindow()
{
    delete ui;
}

也可以在自定义的ceshi文件中引用

ceshi.h

#ifndef CESHI_H
#define CESHI_H

#include <QObject>
#include<data.h>
class Ceshi : public QObject
{
    Q_OBJECT
public:
    explicit Ceshi(QObject *parent = nullptr);
     void pp();
    // enen enen1;
signals:

public slots:
};

#endif // CESHI_H

ceshi.cpp

#include "ceshi.h"
#include<QDebug>
#include<data.h>  //必须要加
enen enen1;  //必须要加
enen enen2;
Ceshi::Ceshi(QObject *parent) : QObject(parent)
{

}
void Ceshi::pp()
{
   qDebug()<<"AAA"<<endl;
    enen1.a=130;
    enen2.a=140;
    qDebug()<<enen1.a<<endl;
    qDebug()<<enen2.a<<endl;
}

 

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值