diff --git a/ActWorld/main.cpp b/ActWorld/main.cpp index e1be194..011ba73 100644 --- a/ActWorld/main.cpp +++ b/ActWorld/main.cpp @@ -1,17 +1,27 @@ #include "ActWorld.h" #include #include +#include -int main(int argc, char *argv[]) +int main(int argc, char* argv[]) { - QApplication app(argc, argv); + QApplication app(argc, argv); - //ActWorld window; - //window.show(); + //ActWorld window; + //window.show(); - MapPresent p; - p.show(); + MapPresent p; + p.show(); + //QObject::connect(&p, &MapPresent::mouseIn, [=]() { + // qDebug() << "Mouse Enter"; + // }); + //QObject::connect(&p, &MapPresent::mouseOut, [=]() { + // qDebug() << "Mouse Leave"; + // }); + //QObject::connect(&p, &MapPresent::mouseHover, [=](const PresentIndex &i) { + // qDebug() << "Mouse Hover" << i.row << i.col; + // }); - return app.exec(); + return app.exec(); } diff --git a/MapPresent/MapPresent.cpp b/MapPresent/MapPresent.cpp index c734f2a..93cb9a6 100644 --- a/MapPresent/MapPresent.cpp +++ b/MapPresent/MapPresent.cpp @@ -3,13 +3,18 @@ #include #include #include +#include #include +#include + MapPresent::MapPresent(QWidget* parent /*= nullptr*/) :QWidget(parent) { _center_index.row = 0; _center_index.col = 0; + + this->setMouseTracking(true); } PresentIndex MapPresent::indexGet(const QPointF& pos) const @@ -93,6 +98,31 @@ void MapPresent::resizeEvent(QResizeEvent* event) visibleUnitsTidy(); } +void MapPresent::mouseMoveEvent(QMouseEvent* event) +{ + QWidget::mouseMoveEvent(event); + event->accept(); + + auto index = indexGet(event->pos()); + emit mouseHover(index); +} + +void MapPresent::enterEvent(QEvent* event) +{ + QWidget::enterEvent(event); + event->accept(); + + emit mouseIn(); +} + +void MapPresent::leaveEvent(QEvent* event) +{ + QWidget::leaveEvent(event); + event->accept(); + + emit mouseOut(); +} + PresentOption AssumeOpt(PresentIndex index, QRectF rf) { PresentOption opt; opt.index = index; diff --git a/MapPresent/MapPresent.h b/MapPresent/MapPresent.h index e650756..5a47759 100644 --- a/MapPresent/MapPresent.h +++ b/MapPresent/MapPresent.h @@ -104,12 +104,16 @@ public: QRectF outlineGet(const PresentIndex& idx) const; signals: - void mouseEnter(); + void mouseIn(); void mouseOut(); - void mouseHover(); + void mouseHover(const PresentIndex &unit_index); protected: void paintEvent(QPaintEvent* ev) override; void resizeEvent(QResizeEvent* event) override; + void mouseMoveEvent(QMouseEvent* event) override; + void enterEvent(QEvent* event) override; + void leaveEvent(QEvent* event) override; + };