Под словом глобально понимается одноразовое объявление\определение переменной доступной для всех модулей (*.cpp).
Рабочий вариант
На самом деле, чтобы один раз в проекте С объявить и определить константу (в т.ч. строковую) можно сделать ее static членом класса или что очень похоже определить тоже static в namespace-е.
Объявляем в заголовочном файле static переменную (можно ей приписать еще const):
#ifndef MYDEFS_H
#define MYDEFS_H
#include <QString>
class Mydefs
{
public:
static const char * STR1;
static const QString STR2;
public:
Mydefs();
};
#endif // MYDEFS_H
Определяем в cpp файле эти константы (инициализируем):
#include "mydefs.h"
const char * Mydefs::STR1 = "BLABLABLA";
const QString Mydefs::STR2 = "trutata";
Mydefs::Mydefs()
{
// .....
}
Теперь подключаем просто заголовочный h файл в любом другом файле cpp и используем эти константы:
#include "mydefs.h"
int main(int argc, char *argv[])
{
qDebug() << Mydefs::STR1 << Mydefs::STR2;
Ещё есть вариант
Век живи - век учись.
Много позже чем хотелось бы выясняется странный рабочий вариант, связанный с namespace и в компиляторе C++ 98.
Можно в namespace заголовочного файла h об'явить и определить QString простым способом.
namespace ququ{
...
static const QString global_str = QString::fromUtf8("trulala");
....
}
И переменная global_str доступна в любом cpp файле как ququ::global_str
Причем надо отметить , что с членом класса такой трюк не проходит.