PowerDesigner/include/util/baseSelector.h

74 lines
2.0 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
*\file baseSelector.h
*
*\brief selector是用来实现对图元进行具体操作的类例如创建、编辑、旋转、移动等通过对鼠标的行为动作进行具体的逻辑编写实现操作表达
*
*\author dsc
*/
#ifndef BASESELECTOR_H
#define BASESELECTOR_H
#include <QObject>
#include "designerScene.h"
enum SelectorType
{
ST_base = 0, //基本
ST_cerating, //创建
ST_moving, //移动
ST_editing, //顶点编辑
ST_scaling, //缩放
ST_rotation, //旋转
};
enum OperationMode
{
OM_none = 0,
OM_move, //移动
OM_create, //创建
OM_edit, //顶点编辑
OM_scale, //缩放
OM_rotate, //旋转
};
class BaseSelector : public QObject
{
Q_OBJECT
public:
explicit BaseSelector(QObject *parent = 0);
virtual ~BaseSelector();
public:
virtual void mousePressEvent(QGraphicsSceneMouseEvent*, DesignerScene*);
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent*, DesignerScene*);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent*, DesignerScene*);
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent*, DesignerScene*);
SelectorType getSelectorType() { return m_type; }
//void setOperationMode(OperationMode m) { m_opMode = m; }
OperationMode getOperationMode() { return ms_opMode; }
void setCursor(DesignerScene*, const QCursor&);
signals:
void setWorkingSelector(SelectorType);
protected:
//静态变量用于不同类型selector间的成员共享
static OperationMode ms_opMode;
static QPointF ms_ptMouseDown;
static QPointF ms_ptMouseLast;
static double ms_dAngleMouseDownToItem; //鼠标按下时其位置和item中心点形成的夹角
static int ms_nDragHandle; //当前抓取的控制点
SelectorType m_type;
private:
bool m_bHoverOnHandel; //鼠标是否悬停在handel
OperationMode m_opMode;
};
#endif