7. qml按键最优解
目录
- qml自带按键
- 状态按键
- 长按按键
- 延时按键
- 防抖按键
qml自带按键
官网列出了他扩展的按键派生与AbstractButton
Button
CheckBox
DelayButton
ltemDelegate
MenuBarltem
Menultem
RadioButton
switch
TabButton
一般开发的过程中根据业务的不同进行选择
AbstractButton
状态按键
RadioButton,CheckBox,switch算是他们的衍生,单选框,多选框,切换按键
checkable: true
checked: false
往往与ButtonGroup息息相关作为组控制
长按按键
autoRepeat: true
autoRepeatDelay: 300
autoRepeatInterval: 100
延时按键
需要使用DelayButton
需要当进度0-1的时候,才会触发actived()信号
这里有个问题就是当delay设置低于500ms,达到1松开太快偶尔会卡住
delay: 1000 //延时时间
防抖按键
在规定的时间内重复点击按键只会执行一次,最后一次点击就执行
如果一直频繁点击,触发执行就会一直延迟,这就是按键防抖的原理
使用这个原因是执行方法耗时,频繁点击会导致无意义多次调用接口,影响性能
借用定时器Timer就可以实现了
import QtQuick 2.0
import QtQuick.Controls 2.12
Button {
id: control
property int delay : 100
signal activated();
onPressed: {
timer.restart();
}
Timer{
id: timer
repeat: false
running: false
interval: delay
onTriggered: control.activated();
}
}