[Rust GUI]fltk-rs的helloworld
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-rs
和fltk-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-rs
和fltk-fluid
都需要安装git,如果以捆绑库的方式运行可以跳过安装
阿里镜像、GitClone、Git官网
可能的文件名:Git-2.40.0-64-bit.exe
7、创建项目(方式一 使用捆绑库)
创建
cargo new fltkdemo
cd .\fltkdemo\
cargo add fltk --features=fltk-bundled
cargo run
解决捆绑库下载问题
注意报错提示,下载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
文件夹,修改才能有效运行
重新运行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程序开发工具)
安装
安装fltk-fluid
需要先安装git和CMake
cargo install fltk-fluid
在项目路径中运行cargo add fl2rust --build
创建编译文件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!"); }
设计界面
运行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
位置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"));
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(); }
运行
cargo run
11、文档
fltk book 中文文档
fltk - crates
[Rust GUI]fltk-rs的helloworld相关推荐
- Rust GUI 库
文章目录 更新 egui conrod native-windows-gui (推荐) iced (推荐) 更新 推荐阅读一篇更全面的.附有代码的 Rust GUI 梳理文章 Rust GUI: In ...
- Rust GUI 编程漫谈:超越 Web 与原生 GUI
自打我有了一个写 Uncode IDE 的小目标之后,我开始寻找一些适用于 Rust 语言的 GUI 框架.对于未来而言,基于 Rust 语言写 GUI 提供了大量的优点. 浏览器环境.在进程分离的架 ...
- [Rust GUI]0.8.0版本iced代码示例 - checkbox
-1.警告 iced迭代很快,主分支会破坏性更新,你可以去iced的发版页面里找到特定的版本. 不支持中文!使用advanced-text分支,查看相关议题#33.相关拉取请求#1697. 0.准备 ...
- Rust 1.0发布一周年,发展回顾与总结
本文为InfoQ中文站特供稿件,首发地址为: http://www.infoq.com/cn/articles/anniversary-of-the-release-of-rust-1 .如需转载,请 ...
- rust笔记7 rust中的包管理
rust相比于C++,一个优势在于有一个现代化的包管理系统,我们不用搞各种命令空间和依赖的问题.这里主要记录了一般文件打包的方式. rust中声明包的关键字是mod,如果是公共的,则需要声明为pub ...
- 相比高人气的 Rust、Go,为何 Java、C 在工具层面进展缓慢?
2022年 Stack Overflow开发者调查结果 已经正式公布.每当这个时候,开发者们都有一肚子的话要吐槽或表扬,开发者 Adam Gordon Bell 也不外如是.Bell 最关注的是最受欢 ...
- 现代编程语言(1):Rust (铁锈,一文掌握钢铁是怎样生锈的)
五种我认为值得掌握的现代编程语言: C(竞品:Zig): Unix/Linux/基础库 等一大波老牌开源基础库和平台开发 JavaScript(升级:TypeScript):浏览器/NodeJS后端/ ...
- FinClip小程序+Rust(三):一个加密钱包
一个加密货币钱包,主要依赖加密算法构建.这部分逻辑无关iOS还是Android,特别适合用Rust去实现.我们看看如何实现一个生成一个模拟钱包,准备供小程序开发采用 前言 在之前的内容我们介绍了整个端 ...
- rust php 扩展,在PHP程序中使用Rust扩展的方法_PHP
C或PHP中的Rust 我的基本出发点就是写一些可以编译的Rust代码到一个库里面,并写为它一些C的头文件,在C中为被调用的PHP做一个拓展.虽然并不是很简单,但是很有趣. Rust FFI(fore ...
最新文章
- java filter注入,Spring-boot中Filter注入bean
- WPF/Silverlight Layout 系统概述——Measure(转)
- 科大星云诗社动态20210905
- SpringBoot回顾
- 丹麦奥尔堡大学计算机系博士,丹麦奥尔堡大学招收计算机全奖PHD
- 转 Java jar (SpringBoot Jar)转为win可执行的exe程序
- 软件发布的版本缩写含义RC 、RTM
- 《贫穷的本质》这本书让我找到为什么不少人缺钱和赚钱少的原因
- yum安装nginx,并配置静态资源服务器
- Silverlight 解密游戏 之十 自定义粒子特效
- 【Azure Services Platform Step by Step-第7篇】别把Windows Azure当虚拟主机使——理解Windows Azure服务架构...
- A[1062]德才论 好题
- android基础复习笔记——3.登录授权、TCP/IP、HTTPS原理
- 【C语言基础学习笔记】+ 【C语言进阶学习笔记】总结篇(坚持才有收获!)
- Android-SEAndroid权限问题指南
- 编程题:核桃的数量(求最小公倍数的问题)
- 分享IT十八掌大数据
- 安霸Alberto Broggi :计算机视觉技术驱动自动驾驶的发展 | 2019 AI+智能汽车创新峰会...
- 核音智言 | 数字孪生IOC,助力城市治理智能高效!
- 每日学习 1153--1164
热门文章
- couchbase的使用(springboot连接couchbase,node.js连接couchbase)
- 转:罗永浩多年前的求职信,人家牛逼是种习惯
- java如何判断一个点在一条线段上
- flink keyby、shuffle、 rebalance、rescale、 broadcast、global、自定义分区算子以及各分区器源码
- 20210728用树莓派 DIY 四轴飞行器(硬件、故障保护、遥控、飞行模式)
- 医疗器械唯一标识UDI问题解答-医疗器械进销存软件管理系统
- 佳能c3020维修模式 白电平调整_传真机维修清零 白电平大全
- Unity中SLua、Tolua、XLua和ILRuntime效率评测
- 算法 algorithms
- 微信小程序(企业客户服务功能)