Files
HPPA/HPPA/MapTool.h
2026-03-12 16:51:13 +08:00

64 lines
1.3 KiB
C++

#ifndef MAPTOOL_H
#define MAPTOOL_H
#include <QObject>
#include <QCursor>
#include <QMouseEvent>
#include <QAction>
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