我正在尝试将 MouseArea 鼠标事件与 C++ 连接,但 QQuickMouseArea 是私有(private)的,所以我无法获取信号。

像这样:

QObject::connect(mouseAreaObj, SIGNAL(released(QMouseEvent*)),
                 handlerObj, SLOT(handleEvent(QMouseEvent*)));

有没有办法解决这个问题?

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

最佳答案

您可以将 QQuickMouseArea 设为 QObject 并将 handlerObj 设置为 mouseAreaObjevent 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/

10-11 19:29