#include "FITKGlobalData.h" #include "FITKRunTimeSetting.h" #include "FITKKeyMouseStates.h" #include "FITKCore/FITKAbstractDataObject.h" #include namespace AppFrame { QMutex FITKGlobalData::_mutex; FITKGlobalData::FITKGlobalData() { _runtimeSetting = new FITKRunTimeSetting; _keyMouseStates = new FITKKeyMouseStates; } FITKGlobalData::~FITKGlobalData() { //释放全部内存 auto gloData = _gData.values(); for (auto d : gloData) delete d; _gData.clear(); if (_runtimeSetting) delete _runtimeSetting; if (_keyMouseStates) delete _keyMouseStates; } void FITKGlobalData::setMainWindow(QWidget* mw) { // 将mw赋值给私有成员变量_mainwindow,保存主窗口的指针。 _mainwindow = mw; if (_mainwindow) connect(_mainwindow, &QWidget::destroyed, this, [&] {_mainwindow = nullptr; }); } QWidget* FITKGlobalData::getMainWindow() { // 直接返回私有成员变量_mainwindow的值,即当前主窗口的指针。 return _mainwindow; } AppFrame::FITKRunTimeSetting* FITKGlobalData::getRunTimeSetting() { // 直接返回私有成员变量_runtimeSetting的值,即指向运行时设置对象的指针。 return _runtimeSetting; } FITKKeyMouseStates* FITKGlobalData::getKeyMouseStates() { return _keyMouseStates; } QList FITKGlobalData::getGlobalDataIDs() { const QList objs = _gData.values(); QList ids; for (Core::FITKAbstractDataObject* obj : objs) { if(obj == nullptr) continue; ids.append(obj->getDataObjectID()); } return ids; } void FITKGlobalData::insertData(int dt, Core::FITKAbstractDataObject* d) { //空指针,不操作 if (d == nullptr) return; //数据存在,先删除原来数据 if (_gData.contains(dt)) { auto d = _gData.value(dt); _gData.remove(dt); if (d) delete d; } //插入数据管理 _gData.insert(dt, d); } // void FITKGlobalData::mainWindowDestorySlot(QObject* obj) // { // if(_mainwindow == obj) // _mainwindow = nullptr; // } }