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");
}
}
}
}