gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 00:57:12 24 4
gpt4 key购买 nike

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

像这样:

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

有什么办法可以解决吗?

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

最佳答案

除了监听QQuickMouseArea 信号,您还可以将其作为QObject 并将您的handlerObj 设置为event filter。你的 mouseAreaObj 像这样:mouseAreaObj->installEventFilter(handlerObj)

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com