【问题标题】:Touch screen double tap directly jumps to next to next screen触摸屏双击直接跳到下一屏
【发布时间】:2017-01-06 18:23:50
【问题描述】:

我正在 SBC6000x 板上开发 Qt 应用程序(Qt 版本 4.7.3)。我正在将 tslib 用于触摸屏。

我有 2 个屏幕,在同一位置有 2 个按钮。当单击(触摸)第一个屏幕上的按钮时,它会转到第二个屏幕。如果我在第一个屏幕上双击按钮,它会注册 2 个触摸事件。第一次触摸它会进入第二个屏幕,第二个触摸在第二个屏幕上处理并显示第三个屏幕。

所以在第一个屏幕上双击我直接跳到第三个屏幕。我想禁止第二次触摸。

这是我尝试过的东西。

  1. 我在 tslib 中寻找更改去抖动时间,但无法获得足够的信息。
  2. 禁用第二个屏幕上的按钮,当屏幕加载时启用它们。

第二种方法的问题: 我没有在运行时创建屏幕,我有一系列屏幕。如果我在 show() 方法中启用按钮,我必须在某处禁用它们。我应该用什么方法禁用它们?

在显示第二个屏幕时,我没有在第一个屏幕上调用 close() 或 hide(),我只在第二个屏幕上调用 show()。所以我不能禁用 closeEvent 或 hideEvent() 中的按钮(因为我根本没有这些方法

我该如何处理?欢迎任何帮助。

【问题讨论】:

  • 明确用户所在的屏幕编号并提供后退按钮?

标签: c++ qt touch


【解决方案1】:

您需要work with Qt's Event system。它允许您跟踪正在发生的任何事件(例如点击)并覆盖您的自定义行为的默认行为。它的范围很广,因此很难为您提供大量信息,但您可能需要查看它如何处理来自鼠标事件的按钮点击,因为没有特定于触摸的事件。

【讨论】:

  • 我试图覆盖 event() 函数。在绘制事件和隐藏事件上,我尝试了第二种方法中提到的逻辑。 (因为绘画是屏幕加载中发生的最后一件事)。但即使是第二次触摸也被注册并采取行动。可能是,从技术上讲,UI 已加载但对用户不可见(由于刷新率慢、显示缓冲区问题等),因此提供了第二次触摸。
【解决方案2】:

当一个按钮被点击时,而不是调用myScreen->show() 调用一个自定义方法,例如myScreen->showWithDelayedButton(),它会做一些类似的事情:

MyScreen::showWithDelayedButton() {
    myButton->hide();
    QTimer::singleShot(250, myButton, SLOT(show));
    show();
}

【讨论】:

    猜你喜欢
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多