Я занимаюсь разработкой приложения Qt (версия 4.7.3 Qt) на плате SBC6000x. Я использую tslib для сенсорного экрана.
У меня 2 экрана с 2 кнопками в одном месте. При нажатии (касании) кнопки на первом экране происходит переход на второй экран. Если я дважды коснусь кнопки на 1-м экране, она зарегистрирует 2 сенсорных события. При первом касании он переходит на второй экран, а второе касание обрабатывается на втором экране и отображается третий экран.
Таким образом, с двойным нажатием на 1-м экране я сразу перехожу на 3-й экран. Я хочу запретить это второе касание.
Вот вещи, которые я опробовал.
Проблема со вторым подходом:
Я не создаю экраны во время выполнения, у меня есть массив экранов. Если я включаю кнопки в методе show (), я должен где-то их отключить. В каком методе я должен их отключить?
При отображении 2-го экрана я не вызываю close () или hide () на 1-м экране, я вызываю только show () на 2-й экран. Поэтому я не могу отключить кнопки в closeEvent или hideEvent () (так как у меня нет этих методов вообще)
Как мне справиться с этим? любая помощь приветствуется.
Вам нужно работа с системой событий Qt. Это позволит вам отслеживать любые происходящие события (например, касание) и переопределять поведение по умолчанию для вашего пользовательского поведения. Она довольно обширна, поэтому трудно дать вам много информации, но, вероятно, вам нужно посмотреть, как она справляется с нажатиями кнопок при событиях мыши, поскольку никаких сенсорных нажатий нет.
Когда кнопка нажата, вместо вызова myScreen->show()
вызвать пользовательский метод, например myScreen->showWithDelayedButton()
который делает что-то вроде:
MyScreen::showWithDelayedButton() {
myButton->hide();
QTimer::singleShot(250, myButton, SLOT(show));
show();
}