qt按键长按功能的实现

时间:2022-09-07 18:00:41
qt中如何实现按键长按功能:在按键按下不松,实现自己想要的功能。keypressevent功能是按下就响应。我想按下后一段时间才响应。

8 个解决方案

#1


按下后,启动一个定时器,在超时槽函数中实现自己想要的功能。

#2


补充一下楼上的。
button的clicked信号其实是融合了两个信号,楼主要实现这样的功能的话,最好不要使用这个信号
button还有两个信号,分别是pressed 和released,pressed 触发的时候,启动一个定时器,一直按住超时的话执行你要的操作,但是如果还没到时间就松开时收到了released信号,就要停止定时器,不响应你要的操作

#3


同意楼上的观点,可以在pressed事件中触发另外一个SIGNAL
这个SIGNAL与一个定时器做绑定 在定时器里判定超时时间是否到了

#4


从按下开始计时、然后弹起的时候判断这个时间到了吗?
到了就在弹起的时候执行你的action

#5


setAutoRepeat ( bool )
setAutoRepeatDelay ( int )
setAutoRepeatInterval ( int )
这有QPushButton的三个函数,
setAutoRepeat (true);
setAutoRepeatDelay ( 你需要的时间如:1000(ms) )
setAutoRepeatInterval (100000)

#6


接上贴:
正常用clicked信号

#7


引用 5 楼 jdwx1 的回复:
setAutoRepeat ( bool )
setAutoRepeatDelay ( int )
setAutoRepeatInterval ( int )
这有QPushButton的三个函数,
setAutoRepeat (true);
setAutoRepeatDelay ( 你需要的时间如:1000(ms) )
setAutoRepeatInterval (100000)
……


嗯~这些api可以搞定

#8


引用 7 楼 myseemydog 的回复:
引用 5 楼 jdwx1 的回复:setAutoRepeat ( bool )
setAutoRepeatDelay ( int )
setAutoRepeatInterval ( int )
这有QPushButton的三个函数,
setAutoRepeat (true);
setAutoRepeatDelay ( 你需要的时间如:1000(ms) )
se……
[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/12.gif]

学习了[/img]

#1


按下后,启动一个定时器,在超时槽函数中实现自己想要的功能。

#2


补充一下楼上的。
button的clicked信号其实是融合了两个信号,楼主要实现这样的功能的话,最好不要使用这个信号
button还有两个信号,分别是pressed 和released,pressed 触发的时候,启动一个定时器,一直按住超时的话执行你要的操作,但是如果还没到时间就松开时收到了released信号,就要停止定时器,不响应你要的操作

#3


同意楼上的观点,可以在pressed事件中触发另外一个SIGNAL
这个SIGNAL与一个定时器做绑定 在定时器里判定超时时间是否到了

#4


从按下开始计时、然后弹起的时候判断这个时间到了吗?
到了就在弹起的时候执行你的action

#5


setAutoRepeat ( bool )
setAutoRepeatDelay ( int )
setAutoRepeatInterval ( int )
这有QPushButton的三个函数,
setAutoRepeat (true);
setAutoRepeatDelay ( 你需要的时间如:1000(ms) )
setAutoRepeatInterval (100000)

#6


接上贴:
正常用clicked信号

#7


引用 5 楼 jdwx1 的回复:
setAutoRepeat ( bool )
setAutoRepeatDelay ( int )
setAutoRepeatInterval ( int )
这有QPushButton的三个函数,
setAutoRepeat (true);
setAutoRepeatDelay ( 你需要的时间如:1000(ms) )
setAutoRepeatInterval (100000)
……


嗯~这些api可以搞定

#8


引用 7 楼 myseemydog 的回复:
引用 5 楼 jdwx1 的回复:setAutoRepeat ( bool )
setAutoRepeatDelay ( int )
setAutoRepeatInterval ( int )
这有QPushButton的三个函数,
setAutoRepeat (true);
setAutoRepeatDelay ( 你需要的时间如:1000(ms) )
se……
[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/12.gif]

学习了[/img]