qt中的全局变量

这个折磨我整整一天呀,不断的调试,我想定义一个全局的结构体,是的可以在不同的.cpp 文件夹中使用,但是刚开始遇到了很多困难,怎样都引用不成功,最后终于写好extern和static下的定义 在自定义.h文件中声明,.cpp文件中赋值 在其他文件中引用需要加上自定义的头文件和 声明

这个折磨我整整一天呀,不断的调试,我想定义一个全局的结构体,是的可以在不同的.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;
}

 

知秋君
上一篇 2024-07-24 07:48
下一篇 2024-07-24 07:12

相关推荐