仓库连接: https://github.com/GaN601/egui-demo-download-util
这是我第一个rust gui demo, 学习rust有挺长时间了, 但是一直没有落实到实践中, 本着对桌面应用的兴趣, 考察了slint、egui两种框架, 最后还是选择了egui.
这篇博客同时包含我当前的一些理解, 但是自身技术有限, 可能有不少错误的地方. 有意者请在评论区指正.
这个demo的效果就是通过主窗口的按钮, 呼出子窗口的输入框, 点击下载按钮后就可以下载文件, 因为只是demo, 下载功能不详细, 只是用reqwest请求下载了而已.
egui要求我们创建一个自己的结构体来进行状态保存, 因此我们需要以下结构体:
点击查看结构体
#[derive(Default)]
struct MainWindow {
window_download_url: DownloadUrl,
}
#[derive(Default, Clone)]
pub struct DownloadUrl {
pub is_show: bool,
pub is_start: bool,
pub url: String,
pub local_path: String,
}
impl DownloadUrl {
pub fn show_window(&mut self, ctx: &Context) {