我正在尝试将MouseArea
鼠标事件与C ++连接,但QQuickMouseArea
是私有的,所以我无法获取信号。
像这样:
QObject::connect(mouseAreaObj, SIGNAL(released(QMouseEvent*)),
handlerObj, SLOT(handleEvent(QMouseEvent*)));
有什么方法可以解决这个问题吗?
如果不能,我想知道为什么Qt不允许我们访问QQuickMouseArea
。
答案 0 :(得分:2)
而不是收听QQuickMouseArea
信号,您可以将其设为QObject
并将handlerObj
设置为mouseAreaObj
mouseAreaObj->installEventFilter(handlerObj)
,如下所示: handlerObj
。
然后,您需要在bool HandlerObject::eventFilter(QObject* obj, QEvent* event)
{
if (event->type() == QEvent::MouseButtonRelease)
return handleEvent(static_cast<QMouseEvent*>(event));
else
return false;
}
中实施event filter。
也许是这样的:
theano
答案 1 :(得分:1)
我在qml mouseArea.clicked.connect(cppObject.onClicked)
中建立了连接,然后在C ++中只收到一个QObject*
,它具有预期的属性:
void CppClass::onClicked(QObject *event) {
qDebug() << "clicked" << event->property("x").toInt();
}