#ifndef MAPTOOL_H #define MAPTOOL_H #include #include #include #include class Mapcavas; class QAction; class MapTool : public QObject { Q_OBJECT public: enum Flag { NoFlags = 0, Transient = 1 << 1, }; Q_DECLARE_FLAGS(Flags, Flag) MapTool(QObject* parent = nullptr); virtual ~MapTool(); virtual Flags flags() const { return NoFlags; } QAction* action() const; void setAction(QAction* action); void setMapcavas(Mapcavas* canvas); Mapcavas* canvas() const; virtual void setCursor(const QCursor& cursor); QCursor cursor() const; virtual void activate(); virtual void deactivate(); bool isActive() const; virtual void canvasMousePressEvent(QMouseEvent* e); virtual void canvasMouseReleaseEvent(QMouseEvent* e); virtual void canvasMouseMoveEvent(QMouseEvent* e); virtual void canvasMouseDoubleClickEvent(QMouseEvent* e); virtual void canvasWheelEvent(QWheelEvent* e); signals: void activated(); void deactivated(); protected: Mapcavas* m_canvas = nullptr; private: QAction* m_action = nullptr; QCursor m_cursor; bool m_isActive = false; }; Q_DECLARE_OPERATORS_FOR_FLAGS(MapTool::Flags) #endif // MAPTOOL_H