Página 1 de 1

long press key qt

Enviado: 30 Set 2016 15:42
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

long press key qt

Enviado: 14 Nov 2016 08:32
por wmanesco
Muito bacana, valeu!