gpt4 book ai didi

qt - Windows 7 中带有 Qt/QML 应用程序的自定义触摸行为

转载 作者:行者123 更新时间:2023-12-04 13:30:30 24 4
gpt4 key购买 nike

我正在使用 Qt/QML 为 Windows 7 开发触摸应用程序。最终用户设备具有 Windows 7 的 native 触摸行为,即:当触摸屏幕时,最后触摸的点上会出现一个点,当结束物理触摸时,Windows 将该点放在现在触摸的点上并运行在点击事件中。

与人们从标准 Windows 鼠标使用中了解到的行为相比,这会导致不同的行为,例如单击某个按钮:鼠标用户会期望当鼠标按钮按下时按钮颜色更改为按下的颜色,而当鼠标按钮上升时颜色再次更改为默认颜色。

在我的应用程序中,我想要一种自定义的触摸反馈方式:当前正在触摸的内容应该使用更改的按钮颜色进行标记,在实际物理触摸开始时模仿“鼠标下降”并模仿“鼠标上升”,当实际的 body 接触结束时。

我的应用程序将全屏运行,因此实际的可能性是在应用程序启动时更改系统行为,并在应用程序结束时将其更改回默认值。

这样的行为实际上与标准行为相同,例如我知道的所有 Android 设备。

我搜索了所有 MouseArea 和 MultiPointTouchArea 元素,试图找到一种方法来使点击 react 行为不同于标准行为。然而,我什至没有找到一种方法来捕捉实际触摸的开始......我想在触摸开始时发生的所有事情实际上都发生在触摸结束时。

编辑:无论我使用 QML 按钮还是鼠标区域加上 MouseArea.pressed 属性都没有关系:在手指离开触摸之前不会“按下”任何东西,甚至会调用 onClicked()。

可能相关: Adobe AIR: touch screen doesn't trigger mouse down event correctly - 但我没有找到从原生 Qt 应用程序访问 Multitouch.inputMode(在第一个回复中提到)等功能的方法。

我怎样才能为我的应用程序实现所描述的行为?

最佳答案

此问题的解决方案是禁用应用程序的“按住”。这是可以在系统范围内使用 ...控制面板 -> 笔和触摸 -> 触摸 -> 按住 -> 设置 -> 取消选中“启用按住以进行右键单击”

我在 native 代码中找到的唯一解决方案可以在这里找到: http://msdn.microsoft.com/en-us/library/ms812373.aspx

我检查过这至少仍然适用于 Windows 7。为了让它适用于 QML,我在 QQmlApplicationEngine::rootObjects() 中搜索了 QWindow* 并将其 winId 用作 HWND。使用该 HWND,我从 app.exec() 之前的链接调用了 TogglePressAndHold 函数。

关于qt - Windows 7 中带有 Qt/QML 应用程序的自定义触摸行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27445630/

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