[Interest] MouseArea blocks 'Custom Scene Graph Item's mouse events
Curtis Mitch
mitch.curtis at theqtcompany.com
Mon Feb 22 13:40:28 CET 2016
From: Interest [mailto:interest-bounces+mitch.curtis=theqtcompany.com at qt-project.org] On Behalf Of Sina Dogru
Sent: Monday, 22 February 2016 1:15 PM
To: interest at qt-project.org
Subject: [Interest] MouseArea blocks 'Custom Scene Graph Item's mouse events
Hello,
I am implementing a custom scene graph item, which inherits QQuickItem<http://doc.qt.io/qt-5/qquickitem.html>.
class CustomItem : public QQuickItem {
Q_OBJECT
public:
CustomItem()
{
setAcceptHoverEvents(true);
setAcceptedMouseButtons(Qt::LeftButton);
setFlag(ItemHasContents);
}
protected:
QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *) override;
void hoverEnterEvent(QHoverEvent *e) override;
void hoverLeaveEvent(QHoverEvent *e) override;
void hoverMoveEvent(QHoverEvent *e) override;
void mouseMoveEvent(QMouseEvent *e) override;
void mouseReleaseEvent(QMouseEvent *e) override;
void mousePressEvent(QMouseEvent *e) override;
};
And I use that CustomItem as a visual parent to some QML Types, like Rectangle<http://doc.qt.io/qt-5/qml-qtquick-rectangle.html>.
CustomItem {
id: custom
width: 400; height: 400
Rectangle {
id: rect
z: -1
anchors.fill: parent
color: "blue"
}
}
Everything was perfect, I was able to draw over the visual childrens using 'z' property with overriding QQuickItem::updatePaintNode.
But the problem raised when I use MouseArea<http://doc.qt.io/qt-5/qml-qtquick-mousearea.html> as a children of my 'CustomItem'.
CustomItem {
id: custom
width: 400; height: 400
Rectangle {
id: rect
z: -1
anchors.fill: parent
color: "blue"
}
MouseArea {
anchors.fill: parent
propagateComposedEvents: true
drag.target: parent
drag.axis: Drag.XandYAxis
}
}
After that, my 'CustomItem' was not getting the mouse events like QQuickItem::hoverEnterEvent<http://doc.qt.io/qt-5/qquickitem.html#hoverEnterEvent> , QQuickItem::mousePressEvent<https://forum.qt.io/topic/64437/doc.qt.io/qt-5/qquickitem.html#mousePressEvent> or QQuickItem::mouseMoveEvent<http://doc.qt.io/qt-5/qquickitem.html#mouseMoveEvent> which those are crucial to implement in my case.
I am not sure if this even possible or am I doing something wrong? If there is a candidate solution for that particular problem, I would be happy to try it.
Note: Here is a similar question on StackOverFlow<http://stackoverflow.com/questions/23986201/mouse-events-not-handled-within-qquickitem-inheritor> which have not been replied.
There is an answer for that question. What happens if you try it? You can also try setting propagateComposedEvents to true:
http://doc.qt.io/qt-5/qml-qtquick-mousearea.html#propagateComposedEvents-prop
I have already asked it question on QtForums<https://forum.qt.io/topic/64437/mousearea-blocks-custom-scene-graph-item-s-mouse-events>.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20160222/a60daada/attachment.html>
More information about the Interest
mailing list