Вообщем есть глобальная переменная определённая в файле Enums.h :
namespace Transac
{
static int cre = 3;
};
Есть одна функция класса CommandLoadEditRequest которая заканчивает свою работу так:
Transac::cre = -1;
emit doneSuccesfully();
return true;
}
Тоесть попросту меняет значение этой глобальной переменной и высылает сигнал.
Сигнал сразу же ловится (cсоединён connect(commandLoad, SIGNAL(doneSuccesfully()), this, SLOT(slotCreateRequest())); )
void visualRequestEdit::slotCreateRequest()
{
qDebug() << ":::::" << Transac::cre;
И выводит мне не -1 а 3!!
Сперва я подумал что просто что-то напутал и набросал простенький пример на чистом с++ дабы проверить как это всё работает по аналогии:
// main
#include "enums.h"
#include "hmm2.h"
#include "hmm.h"
int main(int argc, char *argv[])
{
int t = 20;
hm();
t = DataBase::TA;
return 0;
}
// enums.h
#ifndef ____nawjefawef
#define ____nawjefawef
namespace DataBase{ static int TA = 4; };
#endif
// hmm.h
#ifndef _awkjrefhl234
#define _awkjrefhl234
#include "enums.h"
#include "hmm2.h"
void hm()
{
int i = DataBase::TA;
DataBase::TA = 9;
hm2();
return;
}
#endif
// hmm2.h
#ifndef _awkjrefhl
#define _awkjrefhl
#include "enums.h"
void hm2()
{
int h = DataBase::TA;
DataBase::TA = -9;
return;
}
#endif
Но он работает корректно в отличии от предыдущего =(((
Всё было бы смешно если бы не было так грустно, ибо убил уже дофига времени на всё это =((( з.ы. Весь проект конечно скинуть можно но имхо не имеет смысла.. объёмный ..