update:添加mouse事件

This commit is contained in:
codeboss 2025-10-12 23:21:15 +08:00
parent 6e0edbcbee
commit 4b04982fc9
2 changed files with 25 additions and 10 deletions

View File

@ -18,8 +18,8 @@ MapPresent::MapPresent(QWidget* parent /*= nullptr*/)
auto delegate = new BasicUnitDelegate(this); auto delegate = new BasicUnitDelegate(this);
_type_present_delegate[delegate->unitType()] = delegate; _type_present_delegate[delegate->unitType()] = delegate;
connect(this, &MapPresent::mouseOut, delegate, &BasicUnitDelegate::hotClear); connect(this, &MapPresent::mouseOutNotify, delegate, &BasicUnitDelegate::hotClear);
connect(this, &MapPresent::mouseHover, delegate, &BasicUnitDelegate::hotIndexSet); connect(this, &MapPresent::mouseHoverNotify, delegate, &BasicUnitDelegate::hotIndexSet);
connect(delegate, &BasicUnitDelegate::updateRequest, [=](const PresentIndex& idx) { connect(delegate, &BasicUnitDelegate::updateRequest, [=](const PresentIndex& idx) {
if (idx.isValid() && !_updated_units.contains(idx)) { if (idx.isValid() && !_updated_units.contains(idx)) {
_updated_units.append(idx); _updated_units.append(idx);
@ -97,7 +97,7 @@ void MapPresent::paintEvent(QPaintEvent* ev)
if (_updated_units.size()) { if (_updated_units.size()) {
QPainter pic_painter(&_paint_buffer); QPainter pic_painter(&_paint_buffer);
for (auto idx : _updated_units) { for (auto idx : _updated_units) {
pic_painter.save(); pic_painter.save();
@ -137,7 +137,7 @@ void MapPresent::mouseMoveEvent(QMouseEvent* event)
event->accept(); event->accept();
auto index = indexGet(event->pos()); auto index = indexGet(event->pos());
emit mouseHover(index); emit mouseHoverNotify(index);
} }
void MapPresent::enterEvent(QEvent* event) void MapPresent::enterEvent(QEvent* event)
@ -145,7 +145,7 @@ void MapPresent::enterEvent(QEvent* event)
QWidget::enterEvent(event); QWidget::enterEvent(event);
event->accept(); event->accept();
emit mouseIn(); emit mouseInNotify();
} }
void MapPresent::leaveEvent(QEvent* event) void MapPresent::leaveEvent(QEvent* event)
@ -153,7 +153,19 @@ void MapPresent::leaveEvent(QEvent* event)
QWidget::leaveEvent(event); QWidget::leaveEvent(event);
event->accept(); event->accept();
emit mouseOut(); emit mouseOutNotify();
}
void MapPresent::mousePressEvent(QMouseEvent* ev)
{
QWidget::mousePressEvent(ev);
emit this->mousePressNotify(ev);
}
void MapPresent::mouseReleaseEvent(QMouseEvent* ev)
{
QWidget::mouseReleaseEvent(ev);
emit this->mouseReleaseNotify(ev);
} }
PresentOption AssumeOpt(PresentIndex index, QRectF rf) { PresentOption AssumeOpt(PresentIndex index, QRectF rf) {

View File

@ -151,9 +151,11 @@ public:
QList<PresentIndex> siblingsGet(const PresentIndex& center, uint16_t dist = 1) const; QList<PresentIndex> siblingsGet(const PresentIndex& center, uint16_t dist = 1) const;
signals: signals:
void mouseIn(); void mouseInNotify();
void mouseOut(); void mouseOutNotify();
void mouseHover(const PresentIndex& unit_index); void mouseHoverNotify(const PresentIndex& unit_index);
void mousePressNotify(QMouseEvent* ev);
void mouseReleaseNotify(QMouseEvent* ev);
protected: protected:
void paintEvent(QPaintEvent* ev) override; void paintEvent(QPaintEvent* ev) override;
@ -162,5 +164,6 @@ protected:
void mouseMoveEvent(QMouseEvent* event) override; void mouseMoveEvent(QMouseEvent* event) override;
void enterEvent(QEvent* event) override; void enterEvent(QEvent* event) override;
void leaveEvent(QEvent* event) override; void leaveEvent(QEvent* event) override;
void mousePressEvent(QMouseEvent* ev) override;
void mouseReleaseEvent(QMouseEvent* ev) override;
}; };