61 lines
1.6 KiB
C++
61 lines
1.6 KiB
C++
/**
|
||
*\file selectorManager.h
|
||
*
|
||
*\brief 所有的selector管理类,采用单例模式
|
||
* 每个selector只需实例一个对象,根据具体要实现的内容进行创建和选择
|
||
*\author dsc
|
||
*/
|
||
|
||
#ifndef SELECTORMANAGER_H
|
||
#define SELECTORMANAGER_H
|
||
|
||
#include <QObject>
|
||
#include "baseSelector.h"
|
||
#include "global.h"
|
||
|
||
class SelectorManager : public QObject
|
||
{
|
||
Q_OBJECT
|
||
|
||
public:
|
||
SelectorManager(QObject *parent = 0);
|
||
~SelectorManager();
|
||
|
||
public:
|
||
static SelectorManager* getInstance();
|
||
void setWorkingSelector(SelectorType s) { m_curSelector=s; }
|
||
BaseSelector* getWorkingSelector(); //根据操作方式获取selector
|
||
|
||
void setDrawGraphicsItem(GraphicsItemType);
|
||
|
||
public slots:
|
||
void onSignal_setWorkingSelector(SelectorType);
|
||
|
||
private:
|
||
/*
|
||
程序在结束的时候,系统会自动析构所有的全局变量,系统也会析构掉所有的类的静态成员变量,
|
||
所以可以在单例类中定义一个这样的静态成员变量,它唯一的工作就是在析构函数中删除单例类的实例
|
||
*/
|
||
class CGarbo //它的唯一函数就是在析构函数中删除vsBaseData的实例
|
||
{
|
||
public:
|
||
CGarbo() {};
|
||
~CGarbo()
|
||
{
|
||
if (m_pInstance != nullptr)
|
||
{
|
||
//qDebug()<<"goodbye CGarbo";
|
||
delete m_pInstance;
|
||
m_pInstance = nullptr;
|
||
}
|
||
}
|
||
};
|
||
|
||
private:
|
||
static SelectorManager* m_pInstance;
|
||
SelectorType m_curSelector;
|
||
QVector<BaseSelector*> m_vecSelectors;
|
||
};
|
||
|
||
#endif
|