You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Rust代码访问Slint DSL创建的控件及属性?

解决方法

1. 为Slint控件添加导出标记

要让Rust代码能访问Slint中的percent_widget,必须在Slint定义里给控件加上export关键字——这是Slint暴露控件给Rust的必要条件。修改后的Slint代码如下:

percent_widget := export Text {
    text: percent_widget.percent;
    in-out property <string> percent: "??.? %";
}

2. 在Rust中访问控件并设置属性

Slint编译后会为导出的控件生成对应的Rust API。假设你的根组件是App,可以按以下方式操作:

use slint::ComponentHandle;

// 示例:通过slint!宏定义组件(如果是.ui文件编译,逻辑一致)
slint::slint!{
    App := Window {
        percent_widget := export Text {
            text: percent_widget.percent;
            in-out property <string> percent: "??.? %";
        }
    }
}

fn main() {
    let app = App::new().unwrap();
    // 获取导出的控件实例
    let widget_handle = app.as_weak().unwrap().percent_widget();
    // 设置percent属性
    widget_handle.set_percent("92.3 %".into());
    app.run().unwrap();
}

核心说明

  • export关键字是Slint与Rust交互的关键,没有它Rust编译生成的代码不会包含该控件的访问入口。
  • 对于in-out类型的属性,Slint会自动生成set_<属性名>和get_<属性名>方法,直接调用即可修改或读取属性值。
  • 若使用独立.ui文件编写Slint界面,只需在.ui文件中给控件添加export,编译后Rust端的组件结构体依然会生成对应的控件访问方法。

内容的提问来源于stack exchange,提问作者Jan Diederich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 19:15:59