Проблемы с обнаружением & quot; Нажмите и удерживайте & quot; сенсорное событие на QPushButton в QT

у меня есть QPushButton где я подключился к pressed() сигнал и установить autoRepeat=true,

Кнопка обновляет число при нажатии (с помощью мыши), а при нажатии и удерживании повторяется.

Это отлично работает с мышью. Один клик шаги один раз, нажмите и удерживайте, повторяет его. Простой тап отлично работает на сенсорном экране, но не повторяется при нажатии и удержании.

Я попытался отключить параметр «нажать и удерживать правую кнопку мыши» в Windows 8, но это не помогло. Это только предотвращает правый щелчок.

Если я коснусь QPushButton и отведу палец от кнопки (все еще удерживая), а затем верну палец назад к работам QPushButton, событие press () запустит автоповтор.

MyPanel.ui:

<widget class="QPushButton" name="UpButton">
<property name="text">
<string/>
</property>
<property name="autoRepeat">
<bool>true</bool>
</property>
</widget>

<connection>
<sender>UpButton</sender>
<signal>pressed()</signal>
<receiver>my_panel</receiver>
<slot>UpAction()</slot>
<hints>
<hint type="sourcelabel">
<x>40</x>
<y>261</y>
</hint>
<hint type="destinationlabel">
<x>121</x>
<y>37</y>
</hint>
</hints>
</connection>

MyPanel.cpp:

void MyPanel::UpAction()
{
myNumber += 1;
}

1

Решение

Не забудьте взглянуть на официальную документацию — Программирование жестов. Там вы можете найти полезную информацию об обработке жестов.

Ты забыл грейфер ваш жест, установив grabGesture(Qt::TapAndHoldGesture); на ваше QPushButton, Когда вы включите это, ваш QPushButton начинает хватать TapAndHoldGestureчерез его event, Так что вам нужно, чтобы ваш класс кнопок был унаследован от QPushButton с переопределением event метод. Теперь вы можете контролировать весь процесс распознавания и обработки жестов. Посмотрите на пример Пример изображения жестов.

0

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


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