Makepad 核心概念 logo

Makepad 核心概念

打开

Makepad UI 开发的基本构建块,包括布局系统、组件、事件处理以及使用 live_design! 宏进行样式设置。

分享:

Makepad 核心概念

Makepad UI 开发的基本构建块,包括布局、组件、事件和样式。

快速导航

主题 描述
布局系统 流向、尺寸、间距、对齐
组件 常用组件、自定义组件创建
事件 事件处理、命中测试、操作
样式 字体、文本样式、SVG 图标

概述

Makepad 是一个基于 Rust 的跨平台 UI 框架,使用:

  • live_design! 宏用于声明式 UI 布局
  • 使用 #[derive(Live, Widget)] 进行组件组合
  • 带类型化 Actions 的事件驱动架构
  • GPU 加速渲染

项目结构

my_app/
├── src/
│   ├── app.rs              # 主应用入口,事件路由
│   ├── lib.rs              # 模块声明,live_register
│   ├── home/               # 功能模块
│   │   ├── mod.rs
│   │   └── home_screen.rs
│   └── shared/             # 可重用组件
│       ├── mod.rs
│       ├── styles.rs       # 主题、颜色
│       └── widgets.rs
└── resources/              # 图片、字体

live_design! 宏

Makepad UI 定义的核心:

live_design! {
    use link::theme::*;
    use link::shaders::*;
    use link::widgets::*;

    App = {{App}} {
        ui: <Root> {
            main_window = <Window> {
                body = <View> {
                    flow: Down,
                    spacing: 10,
                    padding: 20,

                    my_button = <Button> {
                        text: "点击我"
                        draw_bg: { color: #4A90D9 }
                    }

                    <Label> { text: "你好 Makepad" }
                }
            }
        }
    }
}

DSL 语法参考

语法 用途 示例
<Widget> 实例化组件 <Button> { text: "确定" }
name = <Widget> 命名引用 my_btn = <Button> {}
{{StructName}} 链接到 Rust 结构 App = {{App}} {}
flow: Down/Right 布局方向 flow: Down
width/height 尺寸 width: Fill, height: Fit
padding/margin 间距 padding: {left: 10, top: 5}

尺寸值

含义
Fill 填充可用空间
Fit 适应内容
Fixed(100.0) 固定像素大小
All 在所有方向填充

事件处理

fn handle_event(&mut self, cx: &mut Cx, event: &Event, scope: &mut Scope) {
    match event.hits(cx, self.view.area()) {
        Hit::FingerDown(_fe) => {
            // 处理点击
        }
        _ => {}
    }
}

资源

评论

还没有评论。成为第一个评论的人!