你还在为创建全局静态对象烦恼嘛,它来了!它来了!
qt5提供了两个宏定义Q_GLOBAL_STATIC和Q_GLOBAL_STATIC_WITH_ARGS来实现。可以创建一个全局静态对象,对象在第一次使用时初始化自身,这意味着它不会增加应用程序或库的加载时间。此外,该对象在所有平台上都以线程安全的方式初始化。
官网 QGlobalStatic Struct | Qt Core 5.15.18
简单例子
globalclass.h
#ifndef GLOBALCLASS_H
#define GLOBALCLASS_H
#include <QObject>
class globalClass
{
public:
globalClass(QString tstr = "");
void test();
};
Q_GLOBAL_STATIC(globalClass,GLOBALCLASS)
Q_GLOBAL_STATIC_WITH_ARGS(globalClass,GLOBALCLASS2, ("Hello word"))
#endif // GLOBALCLASS_H
globalclass.cpp
#include "globalclass.h"
#include <QDebug>
globalClass::globalClass(QString tstr)
{
qDebug() << tstr << this;
}
void globalClass::test()
{
qDebug() << "oooo";
}
使用
//#include "globalclass.h"
GLOBALCLASS->test();
GLOBALCLASS2()->test();