【Rust GUI开发入门】编写一个本地音乐播放器(13. 实现按键绑定)

本系列教程对应的代码已开源在 Github zeedle

本篇文章介绍Slint UI如何为播放器页面添加按键绑定,核心思路是当窗口聚焦时,扫描用户按键输入,命中指定按键时,自动调用相关回调函数 。Slint UI支持FocusScope来处理上述逻辑:

slint 复制代码
export component MainWindow inherits Window {
    
    ...
    
    forward-focus: key-input-handler;
	
	...
	
    key-input-handler := FocusScope {
        key-released(event) => {
            if event.text == Key.Space {
                root.toggle_play();
                return accept;
            } else if event.text == Key.RightArrow || event.text == Key.DownArrow {
                root.play_next();
                return accept;
            } else if event.text == Key.LeftArrow || event.text == Key.UpArrow {
                root.play_prev();
                return accept;
            } else if event.text == Key.F1 {
                tabs.current-index = 0;
                return accept;
            } else if event.text == Key.F2 {
                tabs.current-index = 1;
                return accept;
            } else if event.text == Key.F3 {
                tabs.current-index = 2;
                return accept;
            } else if event.text == Key.F4 {
                tabs.current-index = 3;
                return accept;
            }
            return reject;
        }
    }
}

代码解释

上述代码指定了,当某个按键按下时,所触发的操作:

  • 空格键:播放/暂停当前歌曲
  • 上键头/左键头:上一首歌曲
  • 下箭头。右箭头:下一首歌曲
  • F1:切换到音乐列表页
  • F2:切换到歌词页
  • F3:切换到设置页
  • F4:切换到关于页
相关推荐
小灰灰搞电子8 小时前
Rust+Slint 实现侧滑菜单栏源码分享
开发语言·rust·抽屉式菜单栏
qq_406981039 小时前
大白话rust系列01注释
开发语言·rust
zLLM_Lab11 小时前
GPU kernel 已返回,显存为什么还不能释放?用 Rust 管理 CPU/GPU 完整生命周期
rust·gpu
对象存储与RustFS11 小时前
给 RustFS 拆多租户权限:IAM 用户、组与策略的实战
后端·rust·开源
小灰灰搞电子12 小时前
Rust+Slint 实现蜂巢菜单源码分享
开发语言·rust·蜂巢菜单.
mldong21 小时前
流程实例如何沿着箭头走到结束:Rust 工作流引擎的执行内核
架构·rust
小灰灰搞电子1 天前
Rust+Slint 实现动态轮播图源码分享,支持动态删除、添加
开发语言·rust·slint·动态轮播图
今天AI了吗1 天前
大模型技术全景(一):AI、机器学习、深度学习,三者的关系到底是什么?一文搞懂
数据库·人工智能·python·sql·深度学习·机器学习·rust
Naylor1 天前
切片:指向一段数据,而不是全部
rust