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