【发布时间】:2021-07-15 18:39:06
【问题描述】:
我目前正在尝试在用户触摸特定对话框时捕获 Windows 中多点触控输入的方位角(手指旋转)。 我正在使用 QT C++ 框架。 我正在使用 Surface Laptop 3 测试所有内容。 问题是我在尝试使用 QT 时总是得到 0 的值: 根据 QT 文档:
qreal TouchPoint::rotation() 常量
返回角度方向 这个接触点。返回值以度为单位,其中零( 默认)表示手指或令牌指向上方,否定 角度表示它向左旋转,正角度表示它是 向右旋转。大多数触摸屏不检测旋转,所以 零是最常见的值。
//....
for (auto const& elem : touch.touchPoints()) {
std::cout <<"Rotation:" <<elem.rotation();
//.....
尝试检查如何直接在本机捕获这些数据(没有 QT 框架)以及当我按下屏幕时 我得到的值是 0 或 1。 最初预计会获得更多随机值。 根据文档:
方向
类型:UINT32
指针方向,值在 0 到 359 之间,其中 0 表示与 x 轴对齐并指向从 左到右;增加的值表示旋转的度数 顺时针方向。
如果设备不报告方向,则此字段默认为 0。
#include <winuser.h>
//......
case PT_TOUCH:
POINTER_TOUCH_INFO touchInfo;
GetPointerTouchInfo(pointerId, &touchInfo);
std::cout << "----------------------------------------" << std::endl;
std::cout << "Orientation" << touchInfo.orientation<<std::endl;
以上我假设方向通常与方向完全相同。
- 知道为什么我在 QT 中总是得到 0 吗? (这是一个错误吗?)
- 我的假设正确吗? touchInfo.orientation 类似于rotation();
【问题讨论】:
-
你为什么假设有任何旋转/方向信息?请说明您是如何与触摸输入进行交互的,以及您期望获得的方向。
-
请查看 GetPointerTouchInfo 代码。它打印出 0 和 1 但 QT 只打印 0。
标签: c++ windows qt multi-touch