C++ QML:在C+中获取MouseArea的鼠标事件+;
我试图用C++连接<代码> MouseArea <代码>鼠标事件,但是<代码> QQuickMouseArea <代码>是私有的,所以我不能获取信号。 像这样: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
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()