我目前正在寻找一种方法来为Qt5 Quick Controls 2应用程序实现触摸声音,可以与安卓原生提供的触摸声音相媲美。然而,到目前为止,我还没有找到一种可靠地实现它们的方法。触摸声音应该仅在例如按钮被按下时发生,而不是当用户轻敲屏幕的任意部分时发生。
我的第一个尝试是扫描QML对象树并连接到C++中的所有clicked()信号。这在一定程度上起到了作用,但由于我使用QML Loader组件动态加载QML代码,所以即使在树中的所有对象上安装了ChildAdded事件过滤器,我也无法保持同步。我也没有用这种方法捕获所有(子)组件,因为,例如,内部使用的QQuickSpinButton不会发出clicked()信号。
有谁有替代解决方案的想法吗?
发布于 2018-08-14 15:54:17
另一种选择是在应用程序级别上执行此操作。
在你的QGuiApplication上使用installEventFilter,然后在你的eventFilter中,对QEvent::MouseButtonPress和QEvent::MouseButtonRelease类型的事件做出反应(我不认为你需要处理QEvent::TouchBegin和朋友)。
https://stackoverflow.com/questions/51836245
复制相似问题