1、安装VSCode

下载安装VSCode
安装VSCode扩展 rust-analyzer或rust-analyzer(CN)

2、安装Microsoft C++ 生成工具

访问微软官网下载生成工具,勾选使用 C++ 的桌面开发之后会自动勾选5个项目
取消勾选以下项目
用于 Windows 的 C++ CMake 工具
测试工具核心功能 - 生成工具
C++ AddressSanitizer
只保留以下两个(SDK版本不用管,Win10或Win11都行,勾什么就留什么,不用自己勾)
MSVC v143 - VS 2022 C++ x64/x86 生成工具
Windows 11 SDK (10.0.22000.0)

3、安装rust

安装前必须重启电脑
访问Rust官网下载并安装Rust

4、设置rust镜像

运行where rustc找到.cargo文件夹
.cargo文件夹下新建无后缀文件,文件名为config,并输入以下内容,保存

[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'ustc'
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"

5、安装CMake

fltk-rsfltk-fluid都需要安装CMake,如果以捆绑库的方式运行可以跳过安装


CMake官网、腾讯软件,用IDM、Motrix等下载软件加速下载
可能的文件名:cmake-3.26.0-windows-x86_64.msi
选择Add CMake to the system PATH for all users

6、安装git

fltk-rsfltk-fluid都需要安装git,如果以捆绑库的方式运行可以跳过安装


阿里镜像、GitClone、Git官网
可能的文件名:Git-2.40.0-64-bit.exe

7、创建项目(方式一 使用捆绑库)

  1. 创建
    cargo new fltkdemo
    cd .\fltkdemo\
    cargo add fltk --features=fltk-bundled
    cargo run

  2. 解决捆绑库下载问题

    注意报错提示,下载github文件失败,手动下载或修改下载地址
    thread ‘main’ panicked at ‘Download bundled libraries from “https://github.com/fltk-rs/fltk-rs/releases/download/1.4.0/lib_x64-windows-msvc.tar.gz” failed’

    新建文件夹fltk-lib,新建子文件夹.\fltk-lib\1.4.0(版本号要符合下载链接)
    根据下载链接手动下载压缩包,放入.\fltk-lib\1.4.0文件夹
    VSCode安装Live Server插件
    用VSCode打开文件夹fltk-lib,点击VSCode右下角Go Live启用本地服务器
    浏览器将自动打开,查看压缩包链接,例如:http://127.0.0.1:5500/lib_x64-windows-msvc.tar.gz

    查看整句报错,注意.cargo\registry\src\***\fltk-sys-***\build\bundled.rs这个文件,编辑这个文件

    字符串:

    https://github.com/fltk-rs/fltk-rs/releases/download
    

    修改为:

    /*"https://gitclone.com/github.com/fltk-rs/fltk-rs/releases/download"*/"http://127.0.0.1:5500"
    

    (运行成功后Github链接记得改回来,不然影响其他项目)
    (运行成功后Live Server就可以关闭了,fltk-lib文件夹也用不着了)
    删除.\fltkdemo\target文件夹,修改才能有效

  3. 运行
    重新运行cargo run,成功输出Hello,world!

8、创建项目(方式二 本地CMake编译)

安装cmake,浏览到第5段按步骤安装
安装git,浏览到第6段按步骤安装

cargo new fltkdemo2
cd .\fltkdemo2\
cargo add fltk
cargo run,成功输出Hello,world!

9、使用fltk-rs

编辑文件.\src\main.rs

use fltk::{app, prelude::*, window::Window};fn main() {let app = app::App::default();let mut win = Window::new(100, 100, 250, 100, "你好,fltk-rs!");win.end();win.show();app.run().unwrap();
}

运行cargo run,成功显示窗口

10、Fluid(GUI程序开发工具)

  1. 安装
    安装fltk-fluid需要先安装git和CMake
    cargo install fltk-fluid
    在项目路径中运行cargo add fl2rust --build

  2. 创建编译文件build.rs
    在项目的根目录下添加一个 build.rs 文件,内容如下

    // build.rs
    fn main() {use std::path::PathBuf;use std::env;println!("cargo:rerun-if-changed=src/myuifile.fl");let g = fl2rust::Generator::default();let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());g.in_out("src/myuifile.fl", out_path.join("myuifile.rs").to_str().unwrap()).expect("Failed to generate rust from fl file!");
    }
    
  3. 设计界面
    运行fluid打开FLTK UI Designer(UI设计器)

    菜单栏 - New - Code - Class,创建一个类
    菜单栏 - New - Code - Function/Method…,创建一个函数
    菜单栏 - New - Group - Window…,添加一个窗口
    双击Double_Window,出现预览窗口
    窗口太小,拖动窗口边框右下角,往右拽拽,拉大窗口
    双击预览窗口,出现属性窗口
    GUI - Label,输入我的应用
    Style - Color按钮,选择白色(第一行倒数第一个)
    C++ - Name,输入my_win
    点击Close按钮关闭属性窗口
    右键预览窗口,Buttons - Button…
    双击Button,出现属性窗口
    GUI - Label,输入点击按钮
    GUI - Position - Width,修改为64
    Style - Label Color按钮,选择天蓝色(第一行倒数第二个)
    Style - Color按钮,选择黑色(第一行第一个)
    C++ - Name,输入btn
    点击Close按钮关闭属性窗口
    单击选择Button
    菜单栏 - Layout - Center In Group,Horizontal和Vertical,两个都点
    按钮将移动到预览窗口中央
    菜单栏 - File - Save As…(Ctrl_Shift+S),命名为myuifile.fl,保存在.\src\myuifile.fl位置

  4. UI文件
    在src目录下创建一个fluid相关文件 myuifile.rs,内容如下

    // src/myuifile.rs
    #![allow(unused_variables)]
    #![allow(unused_mut)]
    #![allow(unused_imports)]
    #![allow(clippy::needless_update)]include!(concat!(env!("OUT_DIR"), "/myuifile.rs"));
    
  5. main.rs
    编辑文件.\src\main.rs

    use fltk::{app, prelude::WidgetExt};
    mod myuifile;fn main() {let app = app::App::default();let mut ui = myuifile::UserInterface::make_window();let mut win = ui.my_win.clone();ui.btn.set_callback(move |b| {b.set_label("已点击");win.set_label("已点击");println!("已点击");});app.run().unwrap();
    }
    
  6. 运行
    cargo run

11、文档

fltk book 中文文档
fltk - crates


[Rust GUI]fltk-rs的helloworld相关推荐

  1. Rust GUI 库

    文章目录 更新 egui conrod native-windows-gui (推荐) iced (推荐) 更新 推荐阅读一篇更全面的.附有代码的 Rust GUI 梳理文章 Rust GUI: In ...

  2. Rust GUI 编程漫谈:超越 Web 与原生 GUI

    自打我有了一个写 Uncode IDE 的小目标之后,我开始寻找一些适用于 Rust 语言的 GUI 框架.对于未来而言,基于 Rust 语言写 GUI 提供了大量的优点. 浏览器环境.在进程分离的架 ...

  3. [Rust GUI]0.8.0版本iced代码示例 - checkbox

    -1.警告 iced迭代很快,主分支会破坏性更新,你可以去iced的发版页面里找到特定的版本. 不支持中文!使用advanced-text分支,查看相关议题#33.相关拉取请求#1697. 0.准备 ...

  4. Rust 1.0发布一周年,发展回顾与总结

    本文为InfoQ中文站特供稿件,首发地址为: http://www.infoq.com/cn/articles/anniversary-of-the-release-of-rust-1 .如需转载,请 ...

  5. rust笔记7 rust中的包管理

    rust相比于C++,一个优势在于有一个现代化的包管理系统,我们不用搞各种命令空间和依赖的问题.这里主要记录了一般文件打包的方式. rust中声明包的关键字是mod,如果是公共的,则需要声明为pub ...

  6. 相比高人气的 Rust、Go,为何 Java、C 在工具层面进展缓慢?

    2022年 Stack Overflow开发者调查结果 已经正式公布.每当这个时候,开发者们都有一肚子的话要吐槽或表扬,开发者 Adam Gordon Bell 也不外如是.Bell 最关注的是最受欢 ...

  7. 现代编程语言(1):Rust (铁锈,一文掌握钢铁是怎样生锈的)

    五种我认为值得掌握的现代编程语言: C(竞品:Zig): Unix/Linux/基础库 等一大波老牌开源基础库和平台开发 JavaScript(升级:TypeScript):浏览器/NodeJS后端/ ...

  8. FinClip小程序+Rust(三):一个加密钱包

    一个加密货币钱包,主要依赖加密算法构建.这部分逻辑无关iOS还是Android,特别适合用Rust去实现.我们看看如何实现一个生成一个模拟钱包,准备供小程序开发采用 前言 在之前的内容我们介绍了整个端 ...

  9. rust php 扩展,在PHP程序中使用Rust扩展的方法_PHP

    C或PHP中的Rust 我的基本出发点就是写一些可以编译的Rust代码到一个库里面,并写为它一些C的头文件,在C中为被调用的PHP做一个拓展.虽然并不是很简单,但是很有趣. Rust FFI(fore ...

最新文章

  1. java filter注入,Spring-boot中Filter注入bean
  2. WPF/Silverlight Layout 系统概述——Measure(转)
  3. 科大星云诗社动态20210905
  4. SpringBoot回顾
  5. 丹麦奥尔堡大学计算机系博士,丹麦奥尔堡大学招收计算机全奖PHD
  6. 转 Java jar (SpringBoot Jar)转为win可执行的exe程序
  7. 软件发布的版本缩写含义RC 、RTM
  8. 《贫穷的本质》这本书让我找到为什么不少人缺钱和赚钱少的原因
  9. yum安装nginx,并配置静态资源服务器
  10. Silverlight 解密游戏 之十 自定义粒子特效
  11. 【Azure Services Platform Step by Step-第7篇】别把Windows Azure当虚拟主机使——理解Windows Azure服务架构...
  12. A[1062]德才论 好题
  13. android基础复习笔记——3.登录授权、TCP/IP、HTTPS原理
  14. 【C语言基础学习笔记】+ 【C语言进阶学习笔记】总结篇(坚持才有收获!)
  15. Android-SEAndroid权限问题指南
  16. 编程题:核桃的数量(求最小公倍数的问题)
  17. 分享IT十八掌大数据
  18. 安霸Alberto Broggi :计算机视觉技术驱动自动驾驶的发展 | 2019 AI+智能汽车创新峰会...
  19. 核音智言 | 数字孪生IOC,助力城市治理智能高效!
  20. 每日学习 1153--1164

热门文章

  1. couchbase的使用(springboot连接couchbase,node.js连接couchbase)
  2. 转:罗永浩多年前的求职信,人家牛逼是种习惯
  3. java如何判断一个点在一条线段上
  4. flink keyby、shuffle、 rebalance、rescale、 broadcast、global、自定义分区算子以及各分区器源码
  5. 20210728用树莓派 DIY 四轴飞行器(硬件、故障保护、遥控、飞行模式)
  6. 医疗器械唯一标识UDI问题解答-医疗器械进销存软件管理系统
  7. 佳能c3020维修模式 白电平调整_传真机维修清零 白电平大全
  8. Unity中SLua、Tolua、XLua和ILRuntime效率评测
  9. 算法 algorithms
  10. 微信小程序(企业客户服务功能)