Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QML:在C+中获取MouseArea的鼠标事件+;_C++_Qt_Qml_Qtquick2 - Fatal编程技术网

C++ QML:在C+中获取MouseArea的鼠标事件+;

C++ QML:在C+中获取MouseArea的鼠标事件+;,c++,qt,qml,qtquick2,C++,Qt,Qml,Qtquick2,我试图用C++连接 MouseArea 鼠标事件,但是 QQuickMouseArea 是私有的,所以我不能获取信号。 像这样: QObject::connect(mouseAreaObj, SIGNAL(released(QMouseEvent*)), handlerObj, SLOT(handleEvent(QMouseEvent*))); 有什么办法解决这个问题吗 如果不能,我想知道为什么Qt不允许我们访问QQuickMouseArea而不是收听QQui

我试图用C++连接<代码> MouseArea <代码>鼠标事件,但是<代码> QQuickMouseArea <代码>是私有的,所以我不能获取信号。

像这样:

QObject::connect(mouseAreaObj, SIGNAL(released(QMouseEvent*)),
                 handlerObj, SLOT(handleEvent(QMouseEvent*)));
有什么办法解决这个问题吗


如果不能,我想知道为什么Qt不允许我们访问
QQuickMouseArea

而不是收听
QQuickMouseArea
信号,您可以将其作为
QObject
获取,并将您的
handlerObj
设置为
mousearabj
的一部分,如下所示:
mousearabj->installEventFilter(handlerObj)

然后您需要在
handlerObj
中实现。 也许是这样的:

bool HandlerObject::eventFilter(QObject* obj, QEvent* event)
{
    if (event->type() == QEvent::MouseButtonRelease)
        return handleEvent(static_cast<QMouseEvent*>(event));
    else
        return false;
}
bool HandlerObject::eventFilter(QObject*obj,QEvent*event)
{
如果(事件->类型()==QEvent::MouseButtonRelease)
返回handleEvent(静态施法(事件));
其他的
返回false;
}

<代码> > p>我在QML >代码>鼠标区域中进行连接。单击。连接(CPPOBICATION ONCPLIT)< /C> >然后在C++中简单地接收了一个具有“预期”属性:

的<代码> QObjult*/Cuth>
void CppClass::onClicked(QObject *event) {
    qDebug() << "clicked" << event->property("x").toInt();
}
void CppClass::onClicked(QObject*事件){
qDebug()