很抱歉,如果这个问题没有任何意义,但我刚刚想到,我在很长一段时间内都在寻找解决方案,但最后我想更好地与专家联系。 :)
以下是一个场景:
现在,我可以使用这个" PATH"我的项目中基于CPP文件的任何位置。如果完全没问题的话。
现在,根据用户的输入,我想改变这个" PATH" 说,PATH可以是: PATH = / home / local / Projects / TEST1 /
PATH = /home/local/Projects/TEST2/
and revert to
PATH = /home/local/Projects/
所以,无论我在哪里使用这个" PATH"在我的项目中将自动更改。
我知道这是在编译时完成的。但是想到了。所以想得到专家的反馈。
答案 0 :(得分:0)
你所谓的“Qt define”实际上是预处理器宏,它是在命令行中给编译器的,而不是将它包含在带#define的源代码文件中。您可以使用它作为文字来初始化具有“默认”值的全局变量,如果不是const,则可以在代码中更改。
答案 1 :(得分:0)
一种简单的方法:使用全局配置对象,该对象将PATH
文字的值作为其path
成员的默认值。然后,用户可以更改该默认值:
class Configuration {
Q_DISABLE_COPY(Configuration)
static Configuration * self;
public:
static Configuration * instance() { return self; }
Configuration() {
Q_ASSERT(!self);
self = this;
}
~Configuration() { self = {}; }
QString path{PATH};
};
Configuration * Configuration::self;
int main(int argc, char ** argv) {
Configuration configuration;
QApplication app{argc, argv};
...
qDebug() << Configuration::instance()->path;
}
每当您希望全局访问配置时,请使用Configuration::instance()
静态方法获取实例,然后使用其path
成员。默认设置为硬编码PATH
,但您可以随时更改。
Configuration::instance()
实现与QCoreApplication::instance()
相同的习语:它允许您访问全局唯一值,而不会受到静态初始化顺序惨败的影响。