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

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; } 

 

小讯
上一篇 2025-02-06 08:33
下一篇 2025-03-02 13:33

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/19842.html