long press key qt

Projeto Harbour QT - HbQt, HbXBP e HbIDE

Moderador: Moderadores

MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

long press key qt

Mensagem por MARCELOG »

"Isturdia" (lá em MG é 'outro dia'), estava precisando verificar a situação de longo pressionamento de teclas para um aplicativo.
Como não encontrei nada pronto e/ou similar na internet, fui testando opções e situações até encontrar algo que funcionasse.
A rotina ficou conforme abaixo, tendo sido inicialmente produzida para funcionar com um qtreewidget.
Todavia, deve funcionar com qualquer qwidget.
Vou postar aqui para que outros possam ter acesso, inclusive pelos mecanismos de busca.
Espero ter ajudado.

MarceloG

Example ...

x:=qtreeWidget()
...

__OBJADDDATA(x,'long_press') // cria data

x:long_press:=0

x:CONNECT(QEvent_KeyPress,{|o|LONGPRESSKEY(o,x)}) // sinal tecla pressionada
x:CONNECT(QEvent_KeyRelease,{|o|LONGPRESSKEY(o,x)}) // sinal tecla "despressionada"

//============================================================================

PROCEDURE LONGPRESSKEY(o,x)

LOCAL aKey

aKey:={Qt_Key_Return,Qt_Key_Enter} // teclas a serem monitoras - no caso ENTER

IF ASCAN(aKey,o:KEY()) # 0

IF o:TYPE() == QEvent_KeyPress

IF !o:ISAUTOREPEAT() // primeiro pressionamento

x:long_press:=SECONDS()

ENDIF

ELSEIF o:TYPE() == QEvent_KeyRelease

IF !o:ISAUTOREPEAT() // primeiro despressionamento

IF (SECONDS() - x:long_press) > 1.2 //aumente ou diminua o tempo

// ... function/ procedure a ser executada em face do evento

ENDIF

x:long_press:=SECONDS()

ENDIF

ENDIF

ENDIF

RETURN
Água mole em pedra dura tanto bate que até espirra!
wmanesco
Usuário Nível 3
Usuário Nível 3
Mensagens: 116
Registrado em: 09 Set 2016 13:18
Localização: ITAJAI - SC

long press key qt

Mensagem por wmanesco »

Muito bacana, valeu!
William Manesco
Harbour 3.x | Fivewin | BCC | MySQL (TDolphin) | HBQT | HBIDE | Atom
Responder