Двойное касание сенсорного экрана сразу переходит к следующему экрану

Я занимаюсь разработкой приложения Qt (версия 4.7.3 Qt) на плате SBC6000x. Я использую tslib для сенсорного экрана.

У меня 2 экрана с 2 кнопками в одном месте. При нажатии (касании) кнопки на первом экране происходит переход на второй экран. Если я дважды коснусь кнопки на 1-м экране, она зарегистрирует 2 сенсорных события. При первом касании он переходит на второй экран, а второе касание обрабатывается на втором экране и отображается третий экран.

Таким образом, с двойным нажатием на 1-м экране я сразу перехожу на 3-й экран. Я хочу запретить это второе касание.

Вот вещи, которые я опробовал.

  1. Я искал изменение времени отката в tslib, но не смог получить достаточно информации.
  2. Отключите кнопки на втором экране, включите их, когда экран загружается.

Проблема со вторым подходом:
Я не создаю экраны во время выполнения, у меня есть массив экранов. Если я включаю кнопки в методе show (), я должен где-то их отключить. В каком методе я должен их отключить?

При отображении 2-го экрана я не вызываю close () или hide () на 1-м экране, я вызываю только show () на 2-й экран. Поэтому я не могу отключить кнопки в closeEvent или hideEvent () (так как у меня нет этих методов вообще)

Как мне справиться с этим? любая помощь приветствуется.

0

Решение

Вам нужно работа с системой событий Qt. Это позволит вам отслеживать любые происходящие события (например, касание) и переопределять поведение по умолчанию для вашего пользовательского поведения. Она довольно обширна, поэтому трудно дать вам много информации, но, вероятно, вам нужно посмотреть, как она справляется с нажатиями кнопок при событиях мыши, поскольку никаких сенсорных нажатий нет.

0

Другие решения

Когда кнопка нажата, вместо вызова myScreen->show() вызвать пользовательский метод, например myScreen->showWithDelayedButton() который делает что-то вроде:

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

По вопросам рекламы [email protected]