0

我有一个子类 QGraphicsPixmapItem(项目)设置为接收 hoverMoveEvents 和 mousePressEvent。当我在不移动鼠标的情况下单击该项目时,也会触发 hoverMoveEvent。更有问题的是,当我在 hoverMoveEvent 中调用 QImage::setPixelColor 时,不会触发 mousePressEvent。会发生什么?

事件.h

class Item : public QGraphicsPixmapItem {
  // constructor code

  protected:
    void mousePressEvent(QGraphicsSceneMouseEvent *event);
    void hoverMoveEvent(QGraphicsSceneHoverEvent *event);
}

事件.cpp:

Item::Item() {
  this.setAcceptHoverEvents(true);
}

Item::mousePressEvent(QGraphicsSceneMouseEvent *event) {
  QGraphicsItem::mousePressEvent(event);
  event->accept();
  // get x, y pos
  QImage *img = Image::getInstance(); // Global image singleton
  img->setPixelColor(x, y, qRgba(255, 255, 255, 0));
}

Item::hoverMoveEvent(QGraphicsSceneHoverEvent *event) {
  // get x, y pos
  QImage *img = Image::getInstance();
  img->setPixelColor(x, y, qRgba(0, 0, 0, 0)); --> adding this stops mousePressEvent trigger.
}

我想通过编辑每个事件中的图像像素来接收鼠标按下事件和悬停事件。hoverEvent 处理程序不应接收鼠标按下事件。

4

0 回答 0