C++ 如何在qquickwindow中正确覆盖mousePressEvent?

C++ 如何在qquickwindow中正确覆盖mousePressEvent?,c++,qml,qt5,C++,Qml,Qt5,我从qquickwindow继承了一个对象,该对象具有一个被重写的mousePressEvent方法 h .cpp 问题是,当我将带有MouseArea的矩形添加到qml文件时,它不会以任何方式做出反应。信号转到FWindow,而不是MouseArea。如何修复它 .qml 默认情况下,QQuickItem::mousePressEvent中接收到的QMouseEvent*事件已被接受,如果您不想接受,则必须调用event->ignore()我将event->ignore()添加到mousePr

我从
qquickwindow
继承了一个对象,该对象具有一个被重写的
mousePressEvent
方法

h

.cpp

问题是,当我将带有
MouseArea
矩形添加到qml文件时,它不会以任何方式做出反应。信号转到
FWindow
,而不是
MouseArea
。如何修复它

.qml


默认情况下,
QQuickItem::mousePressEvent
中接收到的
QMouseEvent*事件
已被接受,如果您不想接受,则必须调用
event->ignore()

我将event->ignore()添加到mousePressEvent。它仍然不起作用。我用的是QQuickWindow,不是QQuickItem。你用的是什么版本的Qt?Qt5.12.0。最后我很笨。我有两个方法被
mousePressEvent
mouseReleaseEvent
覆盖。我忘了将
Quickwindow::mouseReleaseEvent(event)
添加到
FWindow::mouseReleaseEvent
,因此它无法工作。最后,代码起作用了。感谢您的帮助。这对我来说是正确的,可能在没有显示此错误的代码中,MousePresseEvent方法如下:
void mousePresseEvent(QMouseEvent*event)override{qDebug()
class FWindow : public QQuickWindow
{
    Q_OBJECT

public:
    FWindow(QQuickWindow* parent = Q_NULLPTR);

protected:
    virtual void mousePressEvent(QMouseEvent* event) override;
};
void FWindow::mousePressEvent(QMouseEvent* event)
{
    if (event->button() == Qt::LeftButton)
    {
        ...
    }
    QQuickWindow::mousePressEvent(event);
}
FWindow
{
    visible: true;

    Rectangle
    {
        width: 50;
        height: 50;
        color: "green";

        anchors.verticalCenter: parent.verticalCenter;
        anchors.horizontalCenter: parent.horizontalCenter;

        MouseArea
        {
            anchors.fill: parent;

            onClicked:
            {
                console.log("clicked");
            }
        }
    }
}