【问题标题】:How do you develop simple code for Gtk+ 3 touch input?你如何为 Gtk+ 3 触摸输入开发简单的代码?
【发布时间】:2016-06-24 20:16:35
【问题描述】:

我一直在寻找一段时间来调查我们的 Gtk+ 3 应用程序(实际上是 Gtk#,但绑定到 Gtk+ 3)是否可以轻松转换为接收触摸事件而不是鼠标点击。目前这是纯粹的调查,因为我实际上还没有 触摸屏(这也是我无法轻易测试我的理论的原因)。

据我所知,Gnome 3 can indeed do this 和似乎相关的文档是手势内容,发现 here

我找不到任何示例 Gtk+ 代码,所以我希望实例化一个手势类并简单地设置它以将事件传递给主事件是一件简单的事情循环。

有没有 Gtk 手势经验的人可以指导我一个简单的例子?假设我有一个DrawableArea,并且我想接收一个非常简单的单点触摸事件,该事件为我提供了一个带有被触摸区域内的点的事件。

一旦我有了它,我应该能够在它的基础上处理滑动、捏合等。

【问题讨论】:

    标签: touch gesture gtk3 gtk#


    【解决方案1】:

    您不能将指针事件作为触摸事件注入:它们根本不同,它们与 GTK 中的手势识别状态机交互。

    GTK 能够(出于调试目的)通过指针模拟触摸事件,但显然它不能模拟多点触摸事件,因为指针设备只有一个事件序列。如果您有最新版本的 GTK 3.x,则可以使用设置为非零值的 GTK_TEST_TOUCHSCREEN 环境变量。

    如果您想知道如何在自己的小部件中使用GtkGesture 实现,那么我建议您查看GtkGesture API 参考,并查看可用的各种手势类型,例如GtkGestureSwipe 或@987654323 @。您应该在构造它时将GtkGesture 实例添加到您的小部件,然后在识别到特定手势时捕获信号。

    【讨论】:

    • ebassi,我不确定我是否理解您在前两段中的观点。我不打算用指针模拟触摸事件,而是想弄清楚如何设置它以便可以在主循环中捕获触摸事件。换句话说,如果用户触摸了可绘制区域,我将如何设置它来接收这些以及队列中会出现哪些事件(信号)?或者,如果这不是它的完成方式,它是如何完成的?
    • 你说你没有触摸设备,所以我指给你调试模式,让你模拟一个;如果你想处理触摸和触摸板手势,那么你应该使用 GTK 提供的 GtkGesture 类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 2014-01-14
    相关资源
    最近更新 更多