添加了mouseIn/mouseOut/mouseHover三种信号

This commit is contained in:
codeboss 2025-10-11 23:18:44 +08:00
parent 7edb3aba43
commit 2ef64272f7
3 changed files with 53 additions and 9 deletions

View File

@ -1,6 +1,7 @@
#include "ActWorld.h"
#include <QtWidgets/QApplication>
#include <MapPresent.h>
#include <QtDebug>
int main(int argc, char* argv[])
{
@ -12,6 +13,15 @@ int main(int argc, char *argv[])
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();
}

View File

@ -3,13 +3,18 @@
#include <QVector2D>
#include <cmath>
#include <QVector3D>
#include <QEvent>
#include <QPainter>
#include <QMouseEvent>
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;

View File

@ -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;
};