目录
Qt中使用全局变量的两种方式
Qt 创建全局变量的一些方法
https://cloud.tencent.com/developer/article/1601692
使用Q_GLOBAL_STATIC创建
原型:
Q_GLOBAL_STATIC(Type, VariableName)
相当于:
static Type VariableName;
它们之间的区别是Q_GLOBAL_STATIC定义的全局变量在首次使用时初始化。
使用extern关键词
在test.cpp中定义全局变量:
int i = 0;
则可以在main.cpp这样使用:
extern int i;
int main(int argc, char *argv[])
{
std::cout << i;
}
创建类中的静态成员
需要注意的是 静态成员需要在类外初始化。
class Test {
public:
static int a;
static QString b;
}
int Test::a = 0;
QString Test::b = "Hello world!";
使用:
Test::a = 100;
Test::b = "OK";
使用QApplication实现
使用Qt的库,一般都会使用QApplication,而QApplication提供的
setProperty //设置全局变量
和
property //访问全局变量。
来实现全局变量。
设置a
全局变量:
qApp->setProperty("a", 100);
访问a
全局变量。
qApp->property("a");
qApp是引用应用程序对象的全局指针。它相当于QCoreApplication::instance()
,但它转换为QApplication指针,因此仅当唯一的应用程序对象是QApplication时才有效。
任何继承QObject的类都具备setProperty
和property
,相当于临时存储区的作用。