我正在尝试将 MouseArea
鼠标事件与 C++ 连接,但 QQuickMouseArea
是私有(private)的,所以我无法获取信号。
像这样:
QObject::connect(mouseAreaObj, SIGNAL(released(QMouseEvent*)),
handlerObj, SLOT(handleEvent(QMouseEvent*)));
有没有办法解决这个问题?
如果不能,我想知道为什么 Qt 不允许我们访问
QQuickMouseArea
。 最佳答案
您可以将 QQuickMouseArea
设为 QObject
并将 handlerObj
设置为 mouseAreaObj
的 event filter,而不是监听 mouseAreaObj->installEventFilter(handlerObj)
信号,如下所示: eventFilter
。
然后你需要在你的 handlerObj
中实现 ojit_code 。
也许是这样的:
bool HandlerObject::eventFilter(QObject* obj, QEvent* event)
{
if (event->type() == QEvent::MouseButtonRelease)
return handleEvent(static_cast<QMouseEvent*>(event));
else
return false;
}
关于c++ - QML:在 C++ 中获取 MouseArea 的鼠标事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37872396/