Details
-
Bug
-
Resolution: Done
-
P2: Important
-
None
-
5.11
-
None
-
-
1c0f0d3072c0944f95bbc15b7e5d3c1629978a6b
Description
With the following code, no text is ever drawn in the item in WASM so no press / move / release events are received.
#include <QApplication> #include <QGraphicsScene> #include <QGraphicsView> #include <QGraphicsItem> #include <QGraphicsSceneMouseEvent> struct MyItem : QGraphicsItem { QRectF boundingRect() const override { return {100, 100, 100, 100}; } void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override { painter->setPen(QPen(QColor(Qt::darkGray).darker(), 3)); painter->setBrush(Qt::lightGray); painter->drawRect(boundingRect()); painter->drawText(boundingRect(), m_text); } void mousePressEvent(QGraphicsSceneMouseEvent *event) override { m_text = QString("press: x: %1, y: %2") .arg(event->scenePos().x()) .arg(event->scenePos().y()); event->accept(); update(); } void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override { m_text = QString("move: x: %1, y: %2") .arg(event->scenePos().x()) .arg(event->scenePos().y()); event->accept(); update(); } void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override { m_text = QString("release: x: %1, y: %2") .arg(event->scenePos().x()) .arg(event->scenePos().y()); event->accept(); update(); } QString m_text; }; int main(int argc, char *argv[]) { QApplication a(argc, argv); QGraphicsScene b; b.addItem(new MyItem); QGraphicsView v{&b}; v.setWindowFlags(Qt::Window | Qt::FramelessWindowHint); v.showFullScreen(); return a.exec(); }
If I replace the QGraphicsView by a custom one :
struct MyView : QGraphicsView { using QGraphicsView::QGraphicsView; void mousePressEvent(QMouseEvent *event) override { qDebug() << "press" << event; QGraphicsView::mousePressEvent(event); } void mouseReleaseEvent(QMouseEvent *event) override { qDebug() << "release" << event; QGraphicsView::mouseReleaseEvent(event); } void mouseMoveEvent(QMouseEvent *event) override { qDebug() << "move" << event; QGraphicsView::mouseMoveEvent(event); } };
I can see the debug messages so the mouse event at least get delivered there.